Re: [PATCH 00/15] Performance improvements for knfsd

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2018-10-01 at 10:41 -0400, Trond Myklebust wrote:
> The following set of patches aim to remove some of the global
> spinlocks
> that are currently being taken during the processing of every
> incoming
> RPC call. Most of these spinlocks are protecting read-mostly
> structures,
> and so can be replaced with taking an RCU read lock.
> 
> The patchset also replaces the current reader/writer spinlock in the
> server cache implementation with an RCU read lock + a regular
> spinlock.
> This gives a slight scalability improvement by allowing lookups to be
> concurrent with updates rather than excluding them.
> 
> Finally, there is a set of changes to the NFSv2/v3/v4.0 duplicate
> reply
> cache to further optimise it for the common case where we're only
> inserting new entries. By using a red-black tree rather than a simple
> linked list, we reduce the typical number of entries we need to check
> (a.k.a. "chain length" in /proc/fs/nfsd/reply_cache_stats) from
> roughly 80 to 9 per incoming RPC request. This significantly reduces
> the
> total amount of time spent in nfsd_cache_lookup() according to
> 'perf'.
> 
> Trond Myklebust (15):
>   SUNRPC: Remove the server 'authtab_lock' and just use RCU
>   SUNRPC: Add lockless lookup of the server's auth domain
>   SUNRPC: Allow cache lookups to use RCU protection rather than the
> r/w
>     spinlock
>   SUNRPC: Make server side AUTH_UNIX use lockless lookups
>   knfsd: Allow lockless lookups of the exports
>   SUNRPC: Lockless server RPCSEC_GSS context lookup
>   knfsd: Lockless lookup of NFSv4 identities.
>   NFS: Lockless DNS lookups
>   SUNRPC: Remove non-RCU protected lookup
>   SUNRPC: Replace the cache_detail->hash_lock with a regular spinlock
>   SUNRPC: Simplify TCP receive code
>   knfsd: Remove dead code from nfsd_cache_lookup
>   knfsd: Simplify NFS duplicate replay cache
>   knfsd: Further simplify the cache lookup
>   knfsd: Improve lookup performance in the duplicate reply cache
> using
>     an rbtree
> 
>  Documentation/filesystems/nfs/rpc-cache.txt |   6 +-
>  fs/nfs/dns_resolve.c                        |  15 +-
>  fs/nfsd/cache.h                             |  19 ++-
>  fs/nfsd/export.c                            |  14 +-
>  fs/nfsd/export.h                            |   2 +
>  fs/nfsd/nfs4idmap.c                         |  11 +-
>  fs/nfsd/nfscache.c                          | 142 +++++++++---------
>  include/linux/sunrpc/cache.h                |  18 ++-
>  include/linux/sunrpc/svcauth.h              |   1 +
>  net/sunrpc/auth_gss/svcauth_gss.c           |  41 +++++-
>  net/sunrpc/cache.c                          | 153 ++++++++++++----
> ----
>  net/sunrpc/svcauth.c                        |  74 +++++++---
>  net/sunrpc/svcauth_unix.c                   |  24 ++-
>  net/sunrpc/svcsock.c                        |  53 ++-----
>  14 files changed, 327 insertions(+), 246 deletions(-)
> 

I forgot to add. The full patchset is also hosted on git://git.linux-
nfs.org/projects/trondmy/linux-nfs.git in the 'knfsd-devel' branch:

git pull git://git.linux-nfs.org/projects/trondmy/linux-nfs.git knfsd-
devel

-- 
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trond.myklebust@xxxxxxxxxxxxxxx






[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux