public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 tip/core/timers 0/5] Crude timer-wheel latency hacks
@ 2014-01-16  4:02 Paul E. McKenney
  2014-01-16  4:02 ` [PATCH tip/core/timers 1/5] timers: Track total number of timers in list Paul E. McKenney
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Paul E. McKenney @ 2014-01-16  4:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
	peterz, rostedt, dhowells, edumazet, darren, fweisbec, oleg, sbw

Hello!

The following five patches provide some crude timer-wheel latency patches.
I understand that a more comprehensive solution is in progress, but in the
meantime, these patches work well in cases where a given CPU has either
zero or one timers pending, which is a common case for NO_HZ_FULL kernels.
Note that these patches do not help in the case where a given timer wheel
has a pair of widely separated timers, while the more comprehensive
solution is likely to handle more gracefully.  So, on the off-chance
that this is helpful to someone, the individual patches are as follows:

1.	Add ->all_timers field to tbase_vec to count all timers, not
	just the non-deferrable ones.

2.	Avoid jiffy-at-a-time stepping when the timer wheel is empty.

3.	Avoid jiffy-at-a-time stepping when the timer wheel transitions
	to empty.

4.	Avoid jiffy-at-a-time stepping after a timer is added to an
	initially empty timer wheel.

5.	Make internal_add_timer() update ->next_timer if ->active_timers == 0,
	courtesy of Oleg Nesterov.

Differences from v2:

o	Add patch #5 from Oleg.

o	Move the check for adding to an empty timer wheel from mod_timer()
	to internal_add_timer(), as suggested by Oleg Nesterov.

o	Addressed review comments from Oleg, Steven Rostedt, Josh Triplett,
	and Fengguang Wu.

Differences from v1:

o	Fix an embarrassing bug located by Oleg Nesterov where the
	timer wheel could be judged to be empty even if it contained
	deferrable timers.

							Thanx, Paul

------------------------------------------------------------------------

 b/kernel/timer.c |   30 ++++++++++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2014-01-16 14:44 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-16  4:02 [PATCH v3 tip/core/timers 0/5] Crude timer-wheel latency hacks Paul E. McKenney
2014-01-16  4:02 ` [PATCH tip/core/timers 1/5] timers: Track total number of timers in list Paul E. McKenney
2014-01-16  4:02   ` [PATCH tip/core/timers 2/5] timers: Reduce __run_timers() latency for empty list Paul E. McKenney
2014-01-16  4:02   ` [PATCH tip/core/timers 3/5] timers: Reduce future __run_timers() latency for newly emptied list Paul E. McKenney
2014-01-16  4:02   ` [PATCH tip/core/timers 4/5] timers: Reduce future __run_timers() latency for first add to empty list Paul E. McKenney
2014-01-16  4:02   ` [PATCH tip/core/timers 5/5] timers: Make internal_add_timer() update ->next_timer if ->active_timers == 0 Paul E. McKenney
2014-01-16  5:47 ` [PATCH v3 tip/core/timers 0/5] Crude timer-wheel latency hacks Josh Triplett
2014-01-16 13:44 ` Peter Zijlstra
2014-01-16 14:31 ` Oleg Nesterov
2014-01-16 14:44 ` Steven Rostedt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox