[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20260121143208.073200729@infradead.org>
Date: Wed, 21 Jan 2026 15:25:00 +0100
From: Peter Zijlstra <peterz@...radead.org>
To: tglx@...utronix.de,
mathieu.desnoyers@...icios.com
Cc: linux-kernel@...r.kernel.org,
peterz@...radead.org,
paulmck@...nel.org,
boqun.feng@...il.com,
corbet@....net,
prakash.sangappa@...cle.com,
vineethr@...ux.ibm.com,
kprateek.nayak@....com,
rostedt@...dmis.org,
bigeasy@...utronix.de,
arnd@...db.de,
rdunlap@...radead.org,
rongevarg@...il.com,
longman@...hat.com
Subject: [PATCH 3/5] 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) <peterz@...radead.org>
---
Documentation/userspace-api/rseq.rst | 2 +-
kernel/rseq.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--- a/Documentation/userspace-api/rseq.rst
+++ b/Documentation/userspace-api/rseq.rst
@@ -79,7 +79,7 @@ slice extension by setting rseq::slice_c
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.
--- a/kernel/rseq.c
+++ b/kernel/rseq.c
@@ -519,7 +519,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);
Powered by blists - more mailing lists