-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[PATCH] Add debugging feature /proc/timer_stat
Add /proc/timer_stats support: debugging feature to profile timer expiration. Both the starting site, process/PID and the expiration function is captured. This allows the quick identification of timer event sources in a system. Sample output: # echo 1 > /proc/timer_stats # cat /proc/timer_stats Timer Stats Version: v0.1 Sample period: 4.010 s 24, 0 swapper hrtimer_stop_sched_tick (hrtimer_sched_tick) 11, 0 swapper sk_reset_timer (tcp_delack_timer) 6, 0 swapper hrtimer_stop_sched_tick (hrtimer_sched_tick) 2, 1 swapper queue_delayed_work_on (delayed_work_timer_fn) 17, 0 swapper hrtimer_restart_sched_tick (hrtimer_sched_tick) 2, 1 swapper queue_delayed_work_on (delayed_work_timer_fn) 4, 2050 pcscd do_nanosleep (hrtimer_wakeup) 5, 4179 sshd sk_reset_timer (tcp_write_timer) 4, 2248 yum-updatesd schedule_timeout (process_timeout) 18, 0 swapper hrtimer_restart_sched_tick (hrtimer_sched_tick) 3, 0 swapper sk_reset_timer (tcp_delack_timer) 1, 1 swapper neigh_table_init_no_netlink (neigh_periodic_timer) 2, 1 swapper e1000_up (e1000_watchdog) 1, 1 init schedule_timeout (process_timeout) 100 total events, 25.24 events/sec [ cleanups and hrtimers support from Thomas Gleixner <tglx@linutronix.de> ] [bunk@stusta.de: nr_entries can become static] Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: john stultz <johnstul@us.ibm.com> Cc: Roman Zippel <zippel@linux-m68k.org> Cc: Andi Kleen <ak@suse.de> Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
- Loading branch information
Ingo Molnar
authored and
Linus Torvalds
committed
Feb 16, 2007
1 parent
8bfd9a7
commit 82f67cd
Showing
9 changed files
with
650 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
timer_stats - timer usage statistics | ||
------------------------------------ | ||
|
||
timer_stats is a debugging facility to make the timer (ab)usage in a Linux | ||
system visible to kernel and userspace developers. It is not intended for | ||
production usage as it adds significant overhead to the (hr)timer code and the | ||
(hr)timer data structures. | ||
|
||
timer_stats should be used by kernel and userspace developers to verify that | ||
their code does not make unduly use of timers. This helps to avoid unnecessary | ||
wakeups, which should be avoided to optimize power consumption. | ||
|
||
It can be enabled by CONFIG_TIMER_STATS in the "Kernel hacking" configuration | ||
section. | ||
|
||
timer_stats collects information about the timer events which are fired in a | ||
Linux system over a sample period: | ||
|
||
- the pid of the task(process) which initialized the timer | ||
- the name of the process which initialized the timer | ||
- the function where the timer was intialized | ||
- the callback function which is associated to the timer | ||
- the number of events (callbacks) | ||
|
||
timer_stats adds an entry to /proc: /proc/timer_stats | ||
|
||
This entry is used to control the statistics functionality and to read out the | ||
sampled information. | ||
|
||
The timer_stats functionality is inactive on bootup. | ||
|
||
To activate a sample period issue: | ||
# echo 1 >/proc/timer_stats | ||
|
||
To stop a sample period issue: | ||
# echo 0 >/proc/timer_stats | ||
|
||
The statistics can be retrieved by: | ||
# cat /proc/timer_stats | ||
|
||
The readout of /proc/timer_stats automatically disables sampling. The sampled | ||
information is kept until a new sample period is started. This allows multiple | ||
readouts. | ||
|
||
Sample output of /proc/timer_stats: | ||
|
||
Timerstats sample period: 3.888770 s | ||
12, 0 swapper hrtimer_stop_sched_tick (hrtimer_sched_tick) | ||
15, 1 swapper hcd_submit_urb (rh_timer_func) | ||
4, 959 kedac schedule_timeout (process_timeout) | ||
1, 0 swapper page_writeback_init (wb_timer_fn) | ||
28, 0 swapper hrtimer_stop_sched_tick (hrtimer_sched_tick) | ||
22, 2948 IRQ 4 tty_flip_buffer_push (delayed_work_timer_fn) | ||
3, 3100 bash schedule_timeout (process_timeout) | ||
1, 1 swapper queue_delayed_work_on (delayed_work_timer_fn) | ||
1, 1 swapper queue_delayed_work_on (delayed_work_timer_fn) | ||
1, 1 swapper neigh_table_init_no_netlink (neigh_periodic_timer) | ||
1, 2292 ip __netdev_watchdog_up (dev_watchdog) | ||
1, 23 events/1 do_cache_clean (delayed_work_timer_fn) | ||
90 total events, 30.0 events/sec | ||
|
||
The first column is the number of events, the second column the pid, the third | ||
column is the name of the process. The forth column shows the function which | ||
initialized the timer and in parantheses the callback function which was | ||
executed on expiry. | ||
|
||
Thomas, Ingo | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.