From 21c0e92d0681fbd10ac024311bd09bca439e0bb1 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Wed, 21 Jan 2026 14:25:04 +0100 Subject: [PATCH] rseq: Lower default slice extension Change the minimum slice extension to 5 usec. Since slice_test selftest reaches a staggering ~350 nsec extension: Task: slice_test Mean: 350.266 ns Latency (us) | Count ------------------------------ EXPIRED | 238 0 us | 143189 1 us | 167 2 us | 26 3 us | 11 4 us | 28 5 us | 31 6 us | 22 7 us | 23 8 us | 32 9 us | 16 10 us | 35 Lower the minimal (and default) value to 5 usecs -- which is still massive. Signed-off-by: Peter Zijlstra (Intel) Link: https://patch.msgid.link/20260121143208.073200729@infradead.org --- Documentation/userspace-api/rseq.rst | 2 +- kernel/rseq.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/userspace-api/rseq.rst b/Documentation/userspace-api/rseq.rst index 29af6c300396c..468f6bbe0e25f 100644 --- a/Documentation/userspace-api/rseq.rst +++ b/Documentation/userspace-api/rseq.rst @@ -79,7 +79,7 @@ slice extension by setting rseq::slice_ctrl::request to 1. If the thread is interrupted and the interrupt results in a reschedule request in the kernel, then the kernel can grant a time slice extension and return to userspace instead of scheduling out. The length of the extension is -determined by debugfs:rseq/slice_ext_nsec. The default value is 10 usec; which +determined by debugfs:rseq/slice_ext_nsec. The default value is 5 usec; which is the minimum value. It can be incremented to 50 usecs, however doing so can/will affect the minimum scheduling latency. diff --git a/kernel/rseq.c b/kernel/rseq.c index e423a9bc0a2c4..b0973d19f366e 100644 --- a/kernel/rseq.c +++ b/kernel/rseq.c @@ -517,7 +517,7 @@ struct slice_timer { void *cookie; }; -static const unsigned int rseq_slice_ext_nsecs_min = 10 * NSEC_PER_USEC; +static const unsigned int rseq_slice_ext_nsecs_min = 5 * NSEC_PER_USEC; static const unsigned int rseq_slice_ext_nsecs_max = 50 * NSEC_PER_USEC; unsigned int rseq_slice_ext_nsecs __read_mostly = rseq_slice_ext_nsecs_min; static DEFINE_PER_CPU(struct slice_timer, slice_timer); -- 2.47.3