Messages in this thread | | | From | Frederic Weisbecker <> | Subject | [RFC PATCH 00/10] timer: Reduce timers softirq (and other optimizations) | Date | Wed, 1 Jul 2020 03:10:20 +0200 |
| |
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(-)
| |