android_kernel_xiaomi_sdm845/include/linux/sunrpc
Greg Banks 36bdfc8bae [PATCH] knfsd: move tempsock aging to a timer
Following are 11 patches from Greg Banks which combine to make knfsd more
Numa-aware.  They reduce hitting on 'global' data structures, and create some
data-structures that can be node-local.

knfsd threads are bound to a particular node, and the thread to handle a new
request is chosen from the threads that are attach to the node that received
the interrupt.

The distribution of threads across nodes can be controlled by a new file in
the 'nfsd' filesystem, though the default approach of an even spread is
probably fine for most sites.

Some (old) numbers that show the efficacy of these patches: N == number of
NICs == number of CPUs == nmber of clients.  Number of NUMA nodes == N/2

N	Throughput, MiB/s	CPU usage, % (max=N*100)
	Before	After		Before	After
	---	------	----		-----	-----
	4	312	435		350	228
	6	500	656		501	418
	8	562	804		690	589

This patch:

Move the aging of RPC/TCP connection sockets from the main svc_recv() loop to
a timer which uses a mark-and-sweep algorithm every 6 minutes.  This reduces
the amount of work that needs to be done in the main RPC loop and the length
of time we need to hold the (effectively global) svc_serv->sv_lock.

[akpm@osdl.org: cleanup]
Signed-off-by: Greg Banks <gnb@melbourne.sgi.com>
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-02 07:57:19 -07:00
..
auth_gss.h
auth.h [SUNRPC]: trivial endianness annotations 2006-09-28 18:01:21 -07:00
cache.h
clnt.h SUNRPC: Eliminate xprt_create_proto and rpc_create_client 2006-09-22 23:24:51 -04:00
debug.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
gss_api.h spelling fixes 2006-06-26 18:35:02 +02:00
gss_asn1.h
gss_err.h
gss_krb5.h [SUNRPC] GSS: Use block ciphers where applicable 2006-09-21 11:46:15 +10:00
gss_spkm3.h [SUNRPC] GSS: Use block ciphers where applicable 2006-09-21 11:46:15 +10:00
Kbuild [HEADERS] One line per header in Kbuild files to reduce conflicts 2006-09-19 12:43:58 +01:00
metrics.h
msg_prot.h [SUNRPC]: trivial endianness annotations 2006-09-28 18:01:21 -07:00
rpc_pipe_fs.h SUNRPC: Make rpc_mkpipe() take the parent dentry as an argument 2006-09-22 23:24:54 -04:00
sched.h SUNRPC: Support for RPC child tasks no longer needed 2006-09-22 23:24:40 -04:00
stats.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
svc.h [PATCH] knfsd: move tempsock aging to a timer 2006-10-02 07:57:19 -07:00
svcauth_gss.h
svcauth.h [SUNRPC]: trivial endianness annotations 2006-09-28 18:01:21 -07:00
svcsock.h [PATCH] knfsd: move tempsock aging to a timer 2006-10-02 07:57:19 -07:00
timer.h
types.h
xdr.h [SUNRPC]: trivial endianness annotations 2006-09-28 18:01:21 -07:00
xprt.h [SUNRPC]: trivial endianness annotations 2006-09-28 18:01:21 -07:00