linux/Documentation/timers/timer_stats.txt
<<
>>
Prefs
   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 initialized
  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 parenthesis 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
  74
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.