# proc_timer_stats

## NAME



           /proc/timer_stats - timer statistics
    


## DESCRIPTION



           _/proc/timer_stats_ (from  Linux 2.6.21 until Linux 4.10)
                  This is a debugging facility to make timer (ab)use in a
                  Linux system visible to kernel and user-space developers.
                  It can be used by kernel and user-space developers to
                  verify that their code does not make undue use of timers.
                  The goal is to avoid unnecessary wakeups, thereby
                  optimizing power consumption.
    
                  If enabled in the kernel (**CONFIG_TIMER_STATS**), but not
                  used, it has almost zero run-time overhead and a relatively
                  small data-structure overhead.  Even if collection is
                  enabled at run time, overhead is low: all the locking is
                  per-CPU and lookup is hashed.
    
                  The _/proc/timer_stats_ file is used both to control sampling
                  facility and to read out the sampled information.
    
                  The _timer_stats_ functionality is inactive on bootup.  A
                  sampling period can be started using the following command:
    
                      # echo 1 > /proc/timer_stats
    
                  The following command stops a sampling period:
    
                      # echo 0 > /proc/timer_stats
    
                  The statistics can be retrieved by:
    
                      $ cat /proc/timer_stats
    
                  While sampling is enabled, each readout from
                  _/proc/timer_stats_ will see newly updated statistics.  Once
                  sampling is disabled, the sampled information is kept until
                  a new sample period is started.  This allows multiple
                  readouts.
    
                  Sample output from _/proc/timer_stats_ :
    
                      $ **cat /proc/timer_stats**
                      Timer Stats Version: v0.3
                      Sample period: 1.764 s
                      Collection: active
                        255,     0 swapper/3        hrtimer_start_range_ns (tick_sched_timer)
                         71,     0 swapper/1        hrtimer_start_range_ns (tick_sched_timer)
                         58,     0 swapper/0        hrtimer_start_range_ns (tick_sched_timer)
                          4,  1694 gnome-shell      mod_delayed_work_on (delayed_work_timer_fn)
                         17,     7 rcu_sched        rcu_gp_kthread (process_timeout)
                      ...
                          1,  4911 kworker/u16:0    mod_delayed_work_on (delayed_work_timer_fn)
                         1D,  2522 kworker/0:0      queue_delayed_work_on (delayed_work_timer_fn)
                      1029 total events, 583.333 events/sec
    
                  The output columns are:
    
                  [1]  a count of the number of events, optionally (since
                       Linux 2.6.23) followed by the letter 'D' if this is a
                       deferrable timer;
    
                  [2]  the PID of the process that initialized the timer;
    
                  [3]  the name of the process that initialized the timer;
    
                  [4]  the function where the timer was initialized; and (in
                       parentheses) the callback function that is associated
                       with the timer.
    
                  During the Linux 4.11 development cycle, this file  was
                  removed because of security concerns, as it exposes
                  information across namespaces.  Furthermore, it is possible
                  to obtain the same information via in-kernel tracing
                  facilities such as ftrace.
    


* * *