From: Frederic Weisbecker <frederic@kernel.org>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Frederic Weisbecker <frederic@kernel.org>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
"Paul E . McKenney" <paulmck@kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Anna-Maria Behnsen <anna-maria@linutronix.de>,
Eric Dumazet <edumazet@google.com>
Subject: [RFC PATCH 0/6] softirq: Start pushing down the big softirq lock
Date: Tue, 1 Aug 2023 15:24:35 +0200 [thread overview]
Message-ID: <20230801132441.559222-1-frederic@kernel.org> (raw)
Networking softirqs can take time, holding the execution of block,
tasklets, timers and RCU callbacks.
People fight hard through this big softirq lock, proposing more and
more hacks over the years to deal with the resulting fundamental
unfairness that is not only a problem for RT users.
Here is a proposal for an entrypoint to dealing with that issue in the
long term. The purpose is to adopt a similar journey to the one we took
with the BKL push-down but with timers. Most timers are unrelated to
other softirq vectors, those can simply be tagged with the new
TIMER_SOFTINTERRUPTIBLE flag that makes a callback soft-interruptible.
The others can carry the TIMER_SOFTINTERRUPTIBLE after they get converted
to use appropriate synchronization against other vectors callbacks
(using spin_lock_bh() for example).
Once all timers are dealt with after a few years (famous last words),
they can be handled separately from the softirq infrastructure.
RCU could follow a similar treatment, if we manage to find room for a
flag somewhere...
(Only -RT and x86 are supported for now)
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
timers/softirq-preemptible
HEAD: c233aee141ddb78d07b2f7311be38cfc286de654
Thanks,
Frederic
---
Frederic Weisbecker (6):
softirq: Turn set_softirq_pending() to reset_softirq_pending()
softirq: Make softirq handling entry/exit generally available
softirq: Introduce softirq disabled mask
x86/softirq: Support softirq disabled mask
timers: Introduce soft-interruptible timers
timers: Make process_timeout() soft-interruptible
arch/Kconfig | 3 +++
arch/x86/Kconfig | 1 +
arch/x86/include/asm/current.h | 1 +
arch/x86/include/asm/hardirq.h | 1 +
include/linux/bottom_half.h | 9 +++++++++
include/linux/interrupt.h | 15 ++++++++++++---
include/linux/timer.h | 5 +++--
kernel/softirq.c | 40 ++++++++++++++++++++++++++++++++--------
kernel/time/timer.c | 20 +++++++++++++++++++-
9 files changed, 81 insertions(+), 14 deletions(-)
next reply other threads:[~2023-08-01 13:24 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-01 13:24 Frederic Weisbecker [this message]
2023-08-01 13:24 ` [RFC PATCH 1/6] softirq: Turn set_softirq_pending() to reset_softirq_pending() Frederic Weisbecker
2023-08-01 13:24 ` [RFC PATCH 2/6] softirq: Make softirq handling entry/exit generally available Frederic Weisbecker
2023-08-01 13:24 ` [RFC PATCH 3/6] softirq: Introduce softirq disabled mask Frederic Weisbecker
2023-08-01 13:24 ` [RFC PATCH 4/6] x86/softirq: Support " Frederic Weisbecker
2023-08-01 13:24 ` [RFC PATCH 5/6] timers: Introduce soft-interruptible timers Frederic Weisbecker
2023-08-01 13:24 ` [RFC PATCH 6/6] timers: Make process_timeout() soft-interruptible Frederic Weisbecker
2023-08-07 12:50 ` [RFC PATCH 0/6] softirq: Start pushing down the big softirq lock Sebastian Andrzej Siewior
2023-08-07 15:22 ` Frederic Weisbecker
2023-08-08 7:15 ` Sebastian Andrzej Siewior
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=20230801132441.559222-1-frederic@kernel.org \
--to=frederic@kernel.org \
--cc=anna-maria@linutronix.de \
--cc=bigeasy@linutronix.de \
--cc=edumazet@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox