timers: Cache __next_timer_interrupt result
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 21 Jul 2009 18:25:05 +0000 (20:25 +0200)
committerIngo Molnar <mingo@elte.hu>
Tue, 4 Aug 2009 18:28:25 +0000 (20:28 +0200)
commit97fd9ed48ce2b807edc363bef3e817aeeb5cd5e6
treeffb221aba4444bd3a1f84affd2aba7aa0784484e
parentfbd90375d7531927d312766b548376d909811b4d
timers: Cache __next_timer_interrupt result

Each time a cpu goes to sleep on a NOHZ=y system the timer
wheel is searched for the next timer interrupt. It can take
quite a few cycles to find the next pending timer.

This patch adds a field to tvec_base that caches the result of
__next_timer_interrupt.

The hit ratio is around 80% on my thinkpad under normal use, on
a server I've seen hit ratios from 5% to 95% dependent on the
workload.

-v2: jiffies wrap fixes

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: john stultz <johnstul@us.ibm.com>
Cc: Venki Pallipadi <venkatesh.pallipadi@intel.com>
LKML-Reference: <20090721202505.7d56a079@skybase>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/timer.c