Blame view

Documentation/cpu-freq/cpufreq-stats.txt 4.9 KB
21e3024cb   Venkatesh Pallipadi   [PATCH] cpufreq-s...
1

53cb47268   Matt LaPlante   Fix typos in Docu...
2
       CPU frequency and voltage scaling statistics in the Linux(TM) kernel
21e3024cb   Venkatesh Pallipadi   [PATCH] cpufreq-s...
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  
  
               L i n u x    c p u f r e q - s t a t s   d r i v e r
  
                         - information for users -
  
  
               Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
  
  Contents
  1. Introduction
  2. Statistics Provided (with example)
  3. Configuring cpufreq-stats
  
  
  1. Introduction
a982ac06b   Matt LaPlante   misc doc and kcon...
19
  cpufreq-stats is a driver that provides CPU frequency statistics for each CPU.
53cb47268   Matt LaPlante   Fix typos in Docu...
20
21
  These statistics are provided in /sysfs as a bunch of read_only interfaces. This
  interface (when configured) will appear in a separate directory under cpufreq
21e3024cb   Venkatesh Pallipadi   [PATCH] cpufreq-s...
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  in /sysfs (<sysfs root>/devices/system/cpu/cpuX/cpufreq/stats/) for each CPU.
  Various statistics will form read_only files under this directory.
  
  This driver is designed to be independent of any particular cpufreq_driver
  that may be running on your CPU. So, it will work with any cpufreq_driver.
  
  
  2. Statistics Provided (with example)
  
  cpufreq stats provides following statistics (explained in detail below).
  -  time_in_state
  -  total_trans
  -  trans_table
  
  All the statistics will be from the time the stats driver has been inserted 
  to the time when a read of a particular statistic is done. Obviously, stats 
d533f6718   Tobias Klauser   [PATCH] Spelling ...
38
  driver will not have any information about the frequency transitions before
21e3024cb   Venkatesh Pallipadi   [PATCH] cpufreq-s...
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  the stats driver insertion.
  
  --------------------------------------------------------------------------------
  <mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # ls -l
  total 0
  drwxr-xr-x  2 root root    0 May 14 16:06 .
  drwxr-xr-x  3 root root    0 May 14 15:58 ..
  -r--r--r--  1 root root 4096 May 14 16:06 time_in_state
  -r--r--r--  1 root root 4096 May 14 16:06 total_trans
  -r--r--r--  1 root root 4096 May 14 16:06 trans_table
  --------------------------------------------------------------------------------
  
  -  time_in_state
  This gives the amount of time spent in each of the frequencies supported by
  this CPU. The cat output will have "<frequency> <time>" pair in each line, which
  will mean this CPU spent <time> usertime units of time at <frequency>. Output
a2ffd2751   Matt LaPlante   Fix typos in Docu...
55
  will have one line for each of the supported frequencies. usertime units here 
21e3024cb   Venkatesh Pallipadi   [PATCH] cpufreq-s...
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
  is 10mS (similar to other time exported in /proc).
  
  --------------------------------------------------------------------------------
  <mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat time_in_state 
  3600000 2089
  3400000 136
  3200000 34
  3000000 67
  2800000 172488
  --------------------------------------------------------------------------------
  
  
  -  total_trans
  This gives the total number of frequency transitions on this CPU. The cat 
  output will have a single count which is the total number of frequency
  transitions.
  
  --------------------------------------------------------------------------------
  <mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat total_trans
  20
  --------------------------------------------------------------------------------
  
  -  trans_table
  This will give a fine grained information about all the CPU frequency
  transitions. The cat output here is a two dimensional matrix, where an entry
  <i,j> (row i, column j) represents the count of number of transitions from 
  Freq_i to Freq_j. Freq_i is in descending order with increasing rows and 
  Freq_j is in descending order with increasing columns. The output here also 
  contains the actual freq values for each row and column for better readability.
  
  --------------------------------------------------------------------------------
  <mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat trans_table
     From  :    To
           :   3600000   3400000   3200000   3000000   2800000 
    3600000:         0         5         0         0         0 
    3400000:         4         0         2         0         0 
    3200000:         0         1         0         2         0 
    3000000:         0         0         1         0         3 
    2800000:         0         0         0         2         0 
  --------------------------------------------------------------------------------
  
  
  3. Configuring cpufreq-stats
  
  To configure cpufreq-stats in your kernel
  Config Main Menu
  	Power management options (ACPI, APM)  --->
  		CPU Frequency scaling  --->
  			[*] CPU Frequency scaling
  			<*>   CPU frequency translation statistics 
  			[*]     CPU frequency translation statistics details
  
  
  "CPU Frequency scaling" (CONFIG_CPU_FREQ) should be enabled to configure
  cpufreq-stats.
  
  "CPU frequency translation statistics" (CONFIG_CPU_FREQ_STAT) provides the
  basic statistics which includes time_in_state and total_trans.
  
  "CPU frequency translation statistics details" (CONFIG_CPU_FREQ_STAT_DETAILS)
  provides fine grained cpufreq stats by trans_table. The reason for having a
53cb47268   Matt LaPlante   Fix typos in Docu...
117
  separate config option for trans_table is:
21e3024cb   Venkatesh Pallipadi   [PATCH] cpufreq-s...
118
119
120
121
122
123
  - trans_table goes against the traditional /sysfs rule of one value per
    interface. It provides a whole bunch of value in a 2 dimensional matrix
    form.
  
  Once these two options are enabled and your CPU supports cpufrequency, you
  will be able to see the CPU frequency statistics in /sysfs.