Message ID | 153666041612.19117.14667042009014596105.stgit@localhost.localdomain (mailing list archive) |
---|---|
Headers | show |
Series | fuse: Solve request_find() bottleneck | expand |
2 weeks passed, so ping. Miklos, any reaction on this? Thanks, Kirill On 11.09.2018 13:11, Kirill Tkhai wrote: > Hi, > > We noticed the performance bottle neck in FUSE running our > Virtuozzo storage over rdma. On some types of workload > we observe 20% of time spent in request_find() in profiler. > This function is iterating over long list of requests, and it > scales bad. > > The patch introduces hash table to reduce the number > of iterations, we do in this function. Also, algorithm > of generating IDs for interrupt requests is changed, > simplified request_find() function and killed > fuse_req::intr_unique field. > > Kirill > --- > > Kirill Tkhai (3): > fuse: Change interrupt requests allocation algorhythm > fuse: Kill fuse_req::intr_unique > fuse: Use hash table to link processing request > > > fs/fuse/dev.c | 47 +++++++++++++++++++++++++++++++++++++---------- > fs/fuse/fuse_i.h | 11 +++++------ > fs/fuse/inode.c | 5 ++++- > 3 files changed, 46 insertions(+), 17 deletions(-) > > -- > Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com> >
On Mon, Sep 24, 2018 at 2:08 PM, Kirill Tkhai <ktkhai@virtuozzo.com> wrote: > 2 weeks passed, so ping. > > Miklos, any reaction on this? > > Thanks, > Kirill > > On 11.09.2018 13:11, Kirill Tkhai wrote: >> Hi, >> >> We noticed the performance bottle neck in FUSE running our >> Virtuozzo storage over rdma. On some types of workload >> we observe 20% of time spent in request_find() in profiler. >> This function is iterating over long list of requests, and it >> scales bad. >> >> The patch introduces hash table to reduce the number >> of iterations, we do in this function. Also, algorithm >> of generating IDs for interrupt requests is changed, >> simplified request_find() function and killed >> fuse_req::intr_unique field. Concept looks good. Will review details... Thanks, Miklos
Hi, We noticed the performance bottle neck in FUSE running our Virtuozzo storage over rdma. On some types of workload we observe 20% of time spent in request_find() in profiler. This function is iterating over long list of requests, and it scales bad. The patch introduces hash table to reduce the number of iterations, we do in this function. Also, algorithm of generating IDs for interrupt requests is changed, simplified request_find() function and killed fuse_req::intr_unique field. Kirill --- Kirill Tkhai (3): fuse: Change interrupt requests allocation algorhythm fuse: Kill fuse_req::intr_unique fuse: Use hash table to link processing request fs/fuse/dev.c | 47 +++++++++++++++++++++++++++++++++++++---------- fs/fuse/fuse_i.h | 11 +++++------ fs/fuse/inode.c | 5 ++++- 3 files changed, 46 insertions(+), 17 deletions(-) -- Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>