~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to Documentation/timers/timer_stats.txt

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
timer_stats - timer usage statistics
 
2
------------------------------------
 
3
 
 
4
timer_stats is a debugging facility to make the timer (ab)usage in a Linux
 
5
system visible to kernel and userspace developers. If enabled in the config
 
6
but not used it has almost zero runtime overhead, and a relatively small
 
7
data structure overhead. Even if collection is enabled runtime all the
 
8
locking is per-CPU and lookup is hashed.
 
9
 
 
10
timer_stats should be used by kernel and userspace developers to verify that
 
11
their code does not make unduly use of timers. This helps to avoid unnecessary
 
12
wakeups, which should be avoided to optimize power consumption.
 
13
 
 
14
It can be enabled by CONFIG_TIMER_STATS in the "Kernel hacking" configuration
 
15
section.
 
16
 
 
17
timer_stats collects information about the timer events which are fired in a
 
18
Linux 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 initialized
 
23
- the callback function which is associated to the timer
 
24
- the number of events (callbacks)
 
25
 
 
26
timer_stats adds an entry to /proc: /proc/timer_stats
 
27
 
 
28
This entry is used to control the statistics functionality and to read out the
 
29
sampled information.
 
30
 
 
31
The timer_stats functionality is inactive on bootup.
 
32
 
 
33
To activate a sample period issue:
 
34
# echo 1 >/proc/timer_stats
 
35
 
 
36
To stop a sample period issue:
 
37
# echo 0 >/proc/timer_stats
 
38
 
 
39
The statistics can be retrieved by:
 
40
# cat /proc/timer_stats
 
41
 
 
42
The readout of /proc/timer_stats automatically disables sampling. The sampled
 
43
information is kept until a new sample period is started. This allows multiple
 
44
readouts.
 
45
 
 
46
Sample output of /proc/timer_stats:
 
47
 
 
48
Timerstats 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)
 
61
90 total events, 30.0 events/sec
 
62
 
 
63
The first column is the number of events, the second column the pid, the third
 
64
column is the name of the process. The forth column shows the function which
 
65
initialized the timer and in parenthesis the callback function which was
 
66
executed on expiry.
 
67
 
 
68
    Thomas, Ingo
 
69
 
 
70
Added flag to indicate 'deferrable timer' in /proc/timer_stats. A deferrable
 
71
timer will appear as follows
 
72
  10D,     1 swapper          queue_delayed_work_on (delayed_work_timer_fn)
 
73