aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/timers/timer_stats.txt
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2008-03-05 12:28:15 -0500
committerThomas Gleixner <tglx@linutronix.de>2008-04-17 06:22:31 -0400
commit3833eecc183ce052e9ac96b39b45121a2d11ac16 (patch)
tree58844d33c1006c6e11d9cdbed822c6aa89d9dfcc /Documentation/timers/timer_stats.txt
parent903b8a8d4835a796f582033802c83283886f4a3d (diff)
Documentation: move timer related documentation to a single place
We have two directories with timer related information in Documentation/: hrtimers/ and hrtimer/. timer_stats are not restricted to hrtimers. Move all those files into Documentation/timers where we can pile up other timer related docs as well. Pointed-out-by: Randy Dunlap <randy@oracle.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'Documentation/timers/timer_stats.txt')
-rw-r--r--Documentation/timers/timer_stats.txt73
1 files changed, 73 insertions, 0 deletions
diff --git a/Documentation/timers/timer_stats.txt b/Documentation/timers/timer_stats.txt
new file mode 100644
index 000000000000..20d368c59814
--- /dev/null
+++ b/Documentation/timers/timer_stats.txt
@@ -0,0 +1,73 @@
1timer_stats - timer usage statistics
2------------------------------------
3
4timer_stats is a debugging facility to make the timer (ab)usage in a Linux
5system visible to kernel and userspace developers. If enabled in the config
6but not used it has almost zero runtime overhead, and a relatively small
7data structure overhead. Even if collection is enabled runtime all the
8locking is per-CPU and lookup is hashed.
9
10timer_stats should be used by kernel and userspace developers to verify that
11their code does not make unduly use of timers. This helps to avoid unnecessary
12wakeups, which should be avoided to optimize power consumption.
13
14It can be enabled by CONFIG_TIMER_STATS in the "Kernel hacking" configuration
15section.
16
17timer_stats collects information about the timer events which are fired in a
18Linux system over a sample period:
19
20- the pid of the task(process) which initialized the timer
21- the name of the process which initialized the timer
22- the function where the timer was intialized
23- the callback function which is associated to the timer
24- the number of events (callbacks)
25
26timer_stats adds an entry to /proc: /proc/timer_stats
27
28This entry is used to control the statistics functionality and to read out the
29sampled information.
30
31The timer_stats functionality is inactive on bootup.
32
33To activate a sample period issue:
34# echo 1 >/proc/timer_stats
35
36To stop a sample period issue:
37# echo 0 >/proc/timer_stats
38
39The statistics can be retrieved by:
40# cat /proc/timer_stats
41
42The readout of /proc/timer_stats automatically disables sampling. The sampled
43information is kept until a new sample period is started. This allows multiple
44readouts.
45
46Sample output of /proc/timer_stats:
47
48Timerstats sample period: 3.888770 s
49 12, 0 swapper hrtimer_stop_sched_tick (hrtimer_sched_tick)
50 15, 1 swapper hcd_submit_urb (rh_timer_func)
51 4, 959 kedac schedule_timeout (process_timeout)
52 1, 0 swapper page_writeback_init (wb_timer_fn)
53 28, 0 swapper hrtimer_stop_sched_tick (hrtimer_sched_tick)
54 22, 2948 IRQ 4 tty_flip_buffer_push (delayed_work_timer_fn)
55 3, 3100 bash schedule_timeout (process_timeout)
56 1, 1 swapper queue_delayed_work_on (delayed_work_timer_fn)
57 1, 1 swapper queue_delayed_work_on (delayed_work_timer_fn)
58 1, 1 swapper neigh_table_init_no_netlink (neigh_periodic_timer)
59 1, 2292 ip __netdev_watchdog_up (dev_watchdog)
60 1, 23 events/1 do_cache_clean (delayed_work_timer_fn)
6190 total events, 30.0 events/sec
62
63The first column is the number of events, the second column the pid, the third
64column is the name of the process. The forth column shows the function which
65initialized the timer and in parantheses the callback function which was
66executed on expiry.
67
68 Thomas, Ingo
69
70Added flag to indicate 'deferrable timer' in /proc/timer_stats. A deferrable
71timer will appear as follows
72 10D, 1 swapper queue_delayed_work_on (delayed_work_timer_fn)
73