timer stats: Optimize by adding quick check to avoid function calls
When the kernel is configured with CONFIG_TIMER_STATS but timer
stats are runtime disabled we still get calls to
__timer_stats_timer_set_start_info which initializes some
fields in the corresponding struct timer_list.
So add some quick checks in the the timer stats setup functions
to avoid function calls to __timer_stats_timer_set_start_info
when timer stats are disabled.
In an artificial workload that does nothing but playing ping
pong with a single tcp packet via loopback this decreases cpu
consumption by 1 - 1.5%.
This is part of a modified function trace output on SLES11:
perl-2497 [00]
28630647177732388 [+ 125]: sk_reset_timer <-tcp_v4_rcv
perl-2497 [00]
28630647177732513 [+ 125]: mod_timer <-sk_reset_timer
perl-2497 [00]
28630647177732638 [+ 125]: __timer_stats_timer_set_start_info <-mod_timer
perl-2497 [00]
28630647177732763 [+ 125]: __mod_timer <-mod_timer
perl-2497 [00]
28630647177732888 [+ 125]: __timer_stats_timer_set_start_info <-__mod_timer
perl-2497 [00]
28630647177733013 [+ 93]: lock_timer_base <-__mod_timer
Signed-off-by: Heiko Carstens <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Martin Schwidefsky <[email protected]>
Cc: Mustafa Mesanovic <[email protected]>
Cc: Arjan van de Ven <[email protected]>
LKML-Reference: <
20090623153811[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>