Hi, while testing I noticed that sometimes thousands of items are
inserted into file_hashtbl, but it's a small fixed-size hash. That
makes the buckets in file_hashtbl larger than two or three items.
The comparison function (fh_match) used while walking through the
buckets is expensive and cache-unfriendly.
The following patches seem to help alleviate that overhead.
---
Chuck Lever (2):
NFSD: Use const pointers as parameters to fh_ helpers.
NFSD: Use rhashtable for managing nfs4_file objects
fs/nfsd/nfs4state.c | 227 ++++++++++++++++++++++++++++++--------------
fs/nfsd/nfsfh.h | 10 +-
fs/nfsd/state.h | 5 +-
3 files changed, 162 insertions(+), 80 deletions(-)
--
Chuck Lever
On Tue, 2022-09-27 at 13:22 -0400, Chuck Lever wrote:
> Hi, while testing I noticed that sometimes thousands of items are
> inserted into file_hashtbl, but it's a small fixed-size hash. That
> makes the buckets in file_hashtbl larger than two or three items.
> The comparison function (fh_match) used while walking through the
> buckets is expensive and cache-unfriendly.
>
> The following patches seem to help alleviate that overhead.
>
> ---
>
> Chuck Lever (2):
> NFSD: Use const pointers as parameters to fh_ helpers.
> NFSD: Use rhashtable for managing nfs4_file objects
>
>
> fs/nfsd/nfs4state.c | 227 ++++++++++++++++++++++++++++++--------------
> fs/nfsd/nfsfh.h | 10 +-
> fs/nfsd/state.h | 5 +-
> 3 files changed, 162 insertions(+), 80 deletions(-)
>
> --
> Chuck Lever
>
This set all looks reasonable to me, and I like the idea of moving to
rhashtable. You can add:
Reviewed-by: Jeff Layton <[email protected]>
> On Sep 28, 2022, at 6:23 AM, Jeff Layton <[email protected]> wrote:
>
> On Tue, 2022-09-27 at 13:22 -0400, Chuck Lever wrote:
>> Hi, while testing I noticed that sometimes thousands of items are
>> inserted into file_hashtbl, but it's a small fixed-size hash. That
>> makes the buckets in file_hashtbl larger than two or three items.
>> The comparison function (fh_match) used while walking through the
>> buckets is expensive and cache-unfriendly.
>>
>> The following patches seem to help alleviate that overhead.
>>
>> ---
>>
>> Chuck Lever (2):
>> NFSD: Use const pointers as parameters to fh_ helpers.
>> NFSD: Use rhashtable for managing nfs4_file objects
>>
>>
>> fs/nfsd/nfs4state.c | 227 ++++++++++++++++++++++++++++++--------------
>> fs/nfsd/nfsfh.h | 10 +-
>> fs/nfsd/state.h | 5 +-
>> 3 files changed, 162 insertions(+), 80 deletions(-)
>>
>> --
>> Chuck Lever
>>
>
> This set all looks reasonable to me, and I like the idea of moving to
> rhashtable. You can add:
>
> Reviewed-by: Jeff Layton <[email protected]>
Thanks for having a look. I'm not sure I want to push these as soon
as v6.1, as they are quite fresh. That might increase the likelihood
of collisions when you work on cleaning up stateID reference counting.
--
Chuck Lever