]> git.baikalelectronics.ru Git - kernel.git/commitdiff
fix parallelism for rpc tasks
authorOlga Kornievskaia <aglo@umich.edu>
Thu, 29 Jun 2017 13:25:36 +0000 (09:25 -0400)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Thu, 8 Feb 2018 21:24:35 +0000 (16:24 -0500)
Hi folks,

On a multi-core machine, is it expected that we can have parallel RPCs
handled by each of the per-core workqueue?

In testing a read workload, observing via "top" command that a single
"kworker" thread is running servicing the requests (no parallelism).
It's more prominent while doing these operations over krb5p mount.

What has been suggested by Bruce is to try this and in my testing I
see then the read workload spread among all the kworker threads.

Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
net/sunrpc/sched.c

index 25e6051e97f29be25fa9e63a542c37483ef2e5d0..d9db2eab3a8df1dec09a0df3a0e5e6310e5fe91d 100644 (file)
@@ -1104,7 +1104,7 @@ static int rpciod_start(void)
         * Create the rpciod thread and wait for it to start.
         */
        dprintk("RPC:       creating workqueue rpciod\n");
-       wq = alloc_workqueue("rpciod", WQ_MEM_RECLAIM, 0);
+       wq = alloc_workqueue("rpciod", WQ_MEM_RECLAIM | WQ_UNBOUND, 0);
        if (!wq)
                goto out_failed;
        rpciod_workqueue = wq;