lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <9409276a27b852abb276616ff38638d7abf8de82.camel@kernel.org>
Date: Tue, 06 Jan 2026 16:53:45 -0500
From: Jeff Layton <jlayton@...nel.org>
To: Chuck Lever <cel@...nel.org>, Chuck Lever <chuck.lever@...cle.com>, 
 NeilBrown <neil@...wn.name>, Olga Kornievskaia <okorniev@...hat.com>, Dai
 Ngo <Dai.Ngo@...cle.com>,  Tom Talpey <tom@...pey.com>, Trond Myklebust
 <trondmy@...nel.org>, Anna Schumaker <anna@...nel.org>
Cc: linux-nfs@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 0/8] nfsd, sunrpc: allow for a dynamically-sized
 threadpool

On Tue, 2026-01-06 at 16:26 -0500, Chuck Lever wrote:
> 
> On Tue, Jan 6, 2026, at 1:59 PM, Jeff Layton wrote:
> > This version of the patchset fixes a number of warts in the first, and
> > hopefully gets this closer to something mergeable.
> > 
> > This patchset allows nfsd to dynamically size its threadpool as needed.
> > The main user-visible change is the addition of new controls that allow
> > the admin to set a minimum number of threads.
> > 
> > When the minimum is set to a non-zero value, the traditional "threads"
> > setting is interpreted as a maximum number of threads instead of a
> > static count. The server will start the minimum number of threads, and
> > then ramp up the thread count as needed. When the server is idle, it
> > will gradually ramp down the thread count.
> > 
> > This control scheme should allow us to sanely switch between kernels
> > that do and do not support dynamic threading. In the case where dynamic
> > threading is not supported, the user will just get the static maximum
> > number of threads, just like they do today.
> > 
> > So far this is only lightly tested, but it seems to work well. I
> > still need to do some benchmarking to see whether this affects
> > performance, so I'm posting this as an RFC for now.
> > 
> > Does this approach look sane to everyone?
> > 
> > Signed-off-by: Jeff Layton <jlayton@...nel.org>
> > ---
> > Changes in v2:
> > - svc_recv() now takes a timeout parameter. This should mean that
> >   non-dynamic RPC services are unaffected by these changes.
> > - if min_threads is larger than the max, then clamp it to the max
> > - simplify SP_TASK_STARTING usage. Have same task set and clear it.
> > - rework thread starting logic (EBUSY handling)
> > - reorder arguments to svc_set_num_threads() and svc_set_pool_threads()
> > - break up larger patches
> > - Link to v1: 
> > https://lore.kernel.org/r/20251213-nfsd-dynathread-v1-0-de755e59cbc4@kernel.org
> > 
> > ---
> > Jeff Layton (8):
> >       sunrpc: split svc_set_num_threads() into two functions
> >       sunrpc: remove special handling of NULL pool from 
> > svc_start/stop_kthreads()
> >       sunrpc: track the max number of requested threads in a pool
> >       sunrpc: introduce the concept of a minimum number of threads per 
> > pool
> >       sunrpc: split new thread creation into a separate function
> >       sunrpc: allow svc_recv() to return -ETIMEDOUT and -EBUSY
> >       nfsd: adjust number of running nfsd threads based on activity
> >       nfsd: add controls to set the minimum number of threads per pool
> > 
> >  Documentation/netlink/specs/nfsd.yaml |   5 +
> >  fs/lockd/svc.c                        |   6 +-
> >  fs/nfs/callback.c                     |  10 +-
> >  fs/nfsd/netlink.c                     |   5 +-
> >  fs/nfsd/netns.h                       |   6 +
> >  fs/nfsd/nfsctl.c                      |  50 ++++++++
> >  fs/nfsd/nfssvc.c                      |  63 +++++++---
> >  fs/nfsd/trace.h                       |  54 +++++++++
> >  include/linux/sunrpc/svc.h            |  13 ++-
> >  include/linux/sunrpc/svcsock.h        |   2 +-
> >  include/uapi/linux/nfsd_netlink.h     |   1 +
> >  net/sunrpc/svc.c                      | 210 ++++++++++++++++++++--------------
> >  net/sunrpc/svc_xprt.c                 |  44 +++++--
> >  13 files changed, 349 insertions(+), 120 deletions(-)
> > ---
> > base-commit: 83f633515af9382e7201e205112e18b995a80f70
> > change-id: 20251212-nfsd-dynathread-9f7a31172005
> > 
> > Best regards,
> > -- 
> > Jeff Layton <jlayton@...nel.org>
> 
> I'm comfortable with this series. Let me know when you are
> ready for me to apply it.
> 

I think it'd be great to put this in nfsd-testing soon so we can start
playing with it. I'll plan to post the nfs-utils patches for this in
the near future too (they need a bit more work).

Thanks,
-- 
Jeff Layton <jlayton@...nel.org>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ