diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-07-28 14:04:09 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2011-08-19 13:25:36 -0400 |
commit | 11fd165c68b73434ca1273e21f21db5eecc90926 (patch) | |
tree | 75c3e2d97b2d59ebaaa4571df2ead80a4c4f35a5 /fs | |
parent | c1f24ef4ed46f58ea5e524a2364c93b6847fb164 (diff) |
sunrpc: use better NUMA affinities
Use NUMA aware allocations to reduce latencies and increase throughput.
sunrpc kthreads can use kthread_create_on_node() if pool_mode is
"percpu" or "pernode", and svc_prepare_thread()/svc_init_buffer() can
also take into account NUMA node affinity for memory allocations.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: "J. Bruce Fields" <bfields@fieldses.org>
CC: Neil Brown <neilb@suse.de>
CC: David Miller <davem@davemloft.net>
Reviewed-by: Greg Banks <gnb@fastmail.fm>
[bfields@redhat.com: fix up caller nfs41_callback_up]
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/lockd/svc.c | 2 | ||||
-rw-r--r-- | fs/nfs/callback.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c index abfff9d7979d..c061b9aa7ddb 100644 --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c | |||
@@ -282,7 +282,7 @@ int lockd_up(void) | |||
282 | /* | 282 | /* |
283 | * Create the kernel thread and wait for it to start. | 283 | * Create the kernel thread and wait for it to start. |
284 | */ | 284 | */ |
285 | nlmsvc_rqst = svc_prepare_thread(serv, &serv->sv_pools[0]); | 285 | nlmsvc_rqst = svc_prepare_thread(serv, &serv->sv_pools[0], NUMA_NO_NODE); |
286 | if (IS_ERR(nlmsvc_rqst)) { | 286 | if (IS_ERR(nlmsvc_rqst)) { |
287 | error = PTR_ERR(nlmsvc_rqst); | 287 | error = PTR_ERR(nlmsvc_rqst); |
288 | nlmsvc_rqst = NULL; | 288 | nlmsvc_rqst = NULL; |
diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c index e3d294269058..516f3375e067 100644 --- a/fs/nfs/callback.c +++ b/fs/nfs/callback.c | |||
@@ -125,7 +125,7 @@ nfs4_callback_up(struct svc_serv *serv) | |||
125 | else | 125 | else |
126 | goto out_err; | 126 | goto out_err; |
127 | 127 | ||
128 | return svc_prepare_thread(serv, &serv->sv_pools[0]); | 128 | return svc_prepare_thread(serv, &serv->sv_pools[0], NUMA_NO_NODE); |
129 | 129 | ||
130 | out_err: | 130 | out_err: |
131 | if (ret == 0) | 131 | if (ret == 0) |
@@ -199,7 +199,7 @@ nfs41_callback_up(struct svc_serv *serv, struct rpc_xprt *xprt) | |||
199 | INIT_LIST_HEAD(&serv->sv_cb_list); | 199 | INIT_LIST_HEAD(&serv->sv_cb_list); |
200 | spin_lock_init(&serv->sv_cb_lock); | 200 | spin_lock_init(&serv->sv_cb_lock); |
201 | init_waitqueue_head(&serv->sv_cb_waitq); | 201 | init_waitqueue_head(&serv->sv_cb_waitq); |
202 | rqstp = svc_prepare_thread(serv, &serv->sv_pools[0]); | 202 | rqstp = svc_prepare_thread(serv, &serv->sv_pools[0], NUMA_NO_NODE); |
203 | if (IS_ERR(rqstp)) { | 203 | if (IS_ERR(rqstp)) { |
204 | svc_xprt_put(serv->sv_bc_xprt); | 204 | svc_xprt_put(serv->sv_bc_xprt); |
205 | serv->sv_bc_xprt = NULL; | 205 | serv->sv_bc_xprt = NULL; |