[RFC PATCH 00/10] timer: Reduce timers softirq (and other optimizations)
From: Frederic Weisbecker
Date: Tue Jun 30 2020 - 21:10:38 EST
Juri Lelli has reported that threaded IRQs don't go along well with
full dynticks.
The tick never manages to stop due to the following endless loop:
* Timer tick raises timer softirq
* Ksoftirqd wakes up, restarts the tick (2 tasks in the runqueue)
* Timer tick raises timer softirq
* Ksoftirqd wakes up, etc...
The main issue here is that the tick fires the timer tick unconditionally,
whether timers have expired or not. This set is a proposal to lower that.
The 1st patch is actually a bugfix for a theoretical issue that I haven't
observed in practice. But who knows?
Patch 2 is a consolidation.
Patch 3 and 4 are optimizations.
The rest is about timer softirqs.
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
timers/softirq
HEAD: d0567dd5546d1f32eca3772a431488f8b0ac26a1
Thanks,
Frederic
---
Frederic Weisbecker (10):
timer: Prevent base->clk from moving backward
timer: Move trigger_dyntick_cpu() to enqueue_timer()
timer: Simplify LVL_START() and calc_index()
timer: Optimize _next_timer_interrupt() level iteration
timers: Always keep track of next expiry
timer: Reuse next expiry cache after nohz exit
timer: Expand clk forward logic beyond nohz
timer: Spare timer softirq until next expiry
timer: Remove must_forward_clk
timer: Lower base clock forwarding threshold
kernel/time/timer.c | 179 +++++++++++++++++++---------------------------------
1 file changed, 64 insertions(+), 115 deletions(-)