From: Chuck Lever <cel@kernel.org>
To: Trond Myklebust <trondmy@kernel.org>,
Anna Schumaker <anna@kernel.org>, Tejun Heo <tj@kernel.org>
Cc: Lai Jiangshan <jiangshanlai@gmail.com>,
linux-nfs@vger.kernel.org,
open list <linux-kernel@vger.kernel.org>,
Chuck Lever <cel@kernel.org>
Subject: [PATCH RFC 0/8] Reduce lock contention in the NFS client
Date: Mon, 31 Aug 2026 14:21:56 -0400 [thread overview]
Message-ID: <20260831-performance-v1-0-8d9fd9b67f96@kernel.org> (raw)
Under a 4KB NFSv3 workload on 100GbE RDMA, roughly 150 RPC worker
threads drive the client, and lock contention dominates its CPU
profile: up to 53% of non-idle cycles are spent in
native_queued_spin_lock_slowpath.
An earlier RFC put this fix in the workqueue core, falling back
automatically to a finer scope when the configured scope
degenerates to a single pod. Tejun rejected a finer default for
unbound workqueues and suggested two alternatives: a sharded
scope between CACHE and SMT, and a scope change on the NFS
workqueues themselves [1]. The first became the
WQ_AFFN_CACHE_SHARD default, whose 8-core shards still leave a
12-core single-LLC system with only two pools. This series does
the second.
My test harness is transport-limited, so the freed cycles appear as
reduced submission latency variance and lower tail completion
latency rather than higher IOPS.
[1] https://lore.kernel.org/all/aYUVVuIidMpuYy3j@slm.duckdns.org/
---
Chuck Lever (8):
SUNRPC: Use atomic_t for XID allocation
SUNRPC: Execute initial async RPC states in caller's context
SUNRPC: Split recv_lock out of xprt->queue_lock
Set WQ_SYSFS on key NFS-related workqueues
workqueue: Export the functions needed for WQ attribute modification
SUNRPC: Reduce rpciod workqueue contention
NFS: Reduce nfsiod workqueue contention
SUNRPC: Reduce xprtiod workqueue contention
fs/nfs/inode.c | 18 ++++++++-
include/linux/sunrpc/xprt.h | 8 +++-
kernel/workqueue.c | 3 ++
net/sunrpc/sched.c | 42 ++++++++++++++------
net/sunrpc/svcsock.c | 6 +--
net/sunrpc/xprt.c | 63 +++++++++++++++---------------
net/sunrpc/xprtrdma/rpc_rdma.c | 14 +++----
net/sunrpc/xprtrdma/svc_rdma_backchannel.c | 8 ++--
net/sunrpc/xprtsock.c | 18 ++++-----
9 files changed, 111 insertions(+), 69 deletions(-)
---
base-commit: cee9395acd8043be0644b25c34bfa86623f2b935
change-id: 20260831-performance-e465e621c1c0
Best regards,
--
Chuck Lever <cel@kernel.org>
next reply other threads:[~2026-08-31 18:22 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 18:21 Chuck Lever [this message]
2026-08-31 18:21 ` [PATCH RFC 1/8] SUNRPC: Use atomic_t for XID allocation Chuck Lever
2026-08-31 18:21 ` [PATCH RFC 2/8] SUNRPC: Execute initial async RPC states in caller's context Chuck Lever
2026-08-31 18:21 ` [PATCH RFC 3/8] SUNRPC: Split recv_lock out of xprt->queue_lock Chuck Lever
2026-08-31 18:22 ` [PATCH RFC 4/8] Set WQ_SYSFS on key NFS-related workqueues Chuck Lever
2026-08-31 18:22 ` [PATCH RFC 5/8] workqueue: Export the functions needed for WQ attribute modification Chuck Lever
2026-08-31 18:22 ` [PATCH RFC 6/8] SUNRPC: Reduce rpciod workqueue contention Chuck Lever
2026-09-02 20:40 ` Tim Menninger
2026-09-03 13:33 ` Chuck Lever
2026-09-03 23:50 ` Tim Menninger
2026-09-04 14:13 ` Chuck Lever
2026-09-04 23:23 ` Tim Menninger
2026-09-06 16:21 ` Chuck Lever
2026-09-08 18:19 ` tmenninger
2026-09-08 21:11 ` Chuck Lever
2026-09-08 23:39 ` tmenninger
2026-09-09 16:14 ` Chuck Lever
2026-09-12 14:59 ` tmenninger
2026-09-12 15:49 ` Chuck Lever
2026-09-13 13:13 ` tmenninger
2026-09-13 16:40 ` Chuck Lever
2026-09-14 17:39 ` tmenninger
2026-09-15 14:42 ` Chuck Lever
2026-09-16 23:25 ` Tim Menninger
2026-08-31 18:22 ` [PATCH RFC 7/8] NFS: Reduce nfsiod " Chuck Lever
2026-08-31 18:22 ` [PATCH RFC 8/8] SUNRPC: Reduce xprtiod " Chuck Lever
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260831-performance-v1-0-8d9fd9b67f96@kernel.org \
--to=cel@kernel.org \
--cc=anna@kernel.org \
--cc=jiangshanlai@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=tj@kernel.org \
--cc=trondmy@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.