[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2994ade2-bd06-4ba7-bcc9-be4d0d15ea0c@paulmck-laptop>
Date: Tue, 1 Jul 2025 17:23:06 -0700
From: "Paul E. McKenney" <paulmck@...nel.org>
To: rcu@...r.kernel.org
Cc: linux-kernel@...r.kernel.org, kernel-team@...a.com, rostedt@...dmis.org,
Christoph Hellwig <hch@...radead.org>
Subject: [PATCH v2 0/5] Remove SRCU-lite in favor of SRCU-fast
Hello!
This series removes the deprecated SRCU-lite flavor.
Both SRCU-lite and SRCU-fast provide faster readers by dropping the
smp_mb() call from their lock and unlock primitives. The price of this
is a pair of added RCU grace periods during the SRCU grace period.
SRCU-fast also adds NMI safety for architectures that have NMIs but do
not have NMI-safe per-CPU operations. In addition, srcu_read_lock_fast()
returns a per-CPU pointer rather than an integer, which provides a further
speedup compared to SRCU-lite by getting rid of array-index calculations.
There is a trivial mapping from the SRCU-lite API to that of SRCU-fast,
so we do not expect any transition issues. In addition, while SRCU-lite
remains in the kernel, checkpatch.pl will warn about added SRCU-lite
use cases.
Further read-side speedups are possible, but they amount to only about
half a nanosecond out of about two nanoseconds (measured on my x86
laptop), and they might require some changes to existing SRCU code.
These changes are trivial, but we need to see a solid need for the
additional performance before inconveniencing existing users.
1. Remove support for SRCU-lite.
2. Remove SRCU-lite scenarios.
3. Remove support for SRCU-lite.
4. Remove SRCU-lite implementation.
5. Remove SRCU-lite deprecation.
Changes since v1:
o Add short explanation of SRCU-lite and SRCU-fast.
Thanx, Paul
------------------------------------------------------------------------
b/include/linux/srcu.h | 2
b/include/linux/srcutiny.h | 3
b/include/linux/srcutree.h | 38 ----------
b/kernel/rcu/rcutorture.c | 7 -
b/kernel/rcu/refscale.c | 32 --------
b/scripts/checkpatch.pl | 2
b/tools/testing/selftests/rcutorture/configs/rcu/CFLIST | 1
include/linux/srcu.h | 47 -------------
tools/testing/selftests/rcutorture/configs/rcu/SRCU-L | 10 --
tools/testing/selftests/rcutorture/configs/rcu/SRCU-L.boot | 3
10 files changed, 4 insertions(+), 141 deletions(-)
Powered by blists - more mailing lists