| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 1 |  | 
 | 2 |  | 
 | 3 | 		Supporting multiple CPU idle levels in kernel | 
 | 4 |  | 
 | 5 | 				cpuidle sysfs | 
 | 6 |  | 
 | 7 | System global cpuidle related information and tunables are under | 
 | 8 | /sys/devices/system/cpu/cpuidle | 
 | 9 |  | 
 | 10 | The current interfaces in this directory has self-explanatory names: | 
 | 11 | * current_driver | 
 | 12 | * current_governor_ro | 
 | 13 |  | 
 | 14 | With cpuidle_sysfs_switch boot option (meant for developer testing) | 
 | 15 | following objects are visible instead. | 
 | 16 | * current_driver | 
 | 17 | * available_governors | 
 | 18 | * current_governor | 
 | 19 | In this case users can switch the governor at run time by writing | 
 | 20 | to current_governor. | 
 | 21 |  | 
 | 22 |  | 
 | 23 | Per logical CPU specific cpuidle information are under | 
 | 24 | /sys/devices/system/cpu/cpuX/cpuidle | 
 | 25 | for each online cpu X | 
 | 26 |  | 
 | 27 | -------------------------------------------------------------------------------- | 
 | 28 | # ls -lR /sys/devices/system/cpu/cpu0/cpuidle/ | 
 | 29 | /sys/devices/system/cpu/cpu0/cpuidle/: | 
 | 30 | total 0 | 
 | 31 | drwxr-xr-x 2 root root 0 Feb  8 10:42 state0 | 
 | 32 | drwxr-xr-x 2 root root 0 Feb  8 10:42 state1 | 
 | 33 | drwxr-xr-x 2 root root 0 Feb  8 10:42 state2 | 
 | 34 | drwxr-xr-x 2 root root 0 Feb  8 10:42 state3 | 
 | 35 |  | 
 | 36 | /sys/devices/system/cpu/cpu0/cpuidle/state0: | 
 | 37 | total 0 | 
 | 38 | -r--r--r-- 1 root root 4096 Feb  8 10:42 desc | 
 | 39 | -rw-r--r-- 1 root root 4096 Feb  8 10:42 disable | 
 | 40 | -r--r--r-- 1 root root 4096 Feb  8 10:42 latency | 
 | 41 | -r--r--r-- 1 root root 4096 Feb  8 10:42 name | 
 | 42 | -r--r--r-- 1 root root 4096 Feb  8 10:42 power | 
 | 43 | -r--r--r-- 1 root root 4096 Feb  8 10:42 residency | 
 | 44 | -r--r--r-- 1 root root 4096 Feb  8 10:42 time | 
 | 45 | -r--r--r-- 1 root root 4096 Feb  8 10:42 usage | 
 | 46 |  | 
 | 47 | /sys/devices/system/cpu/cpu0/cpuidle/state1: | 
 | 48 | total 0 | 
 | 49 | -r--r--r-- 1 root root 4096 Feb  8 10:42 desc | 
 | 50 | -rw-r--r-- 1 root root 4096 Feb  8 10:42 disable | 
 | 51 | -r--r--r-- 1 root root 4096 Feb  8 10:42 latency | 
 | 52 | -r--r--r-- 1 root root 4096 Feb  8 10:42 name | 
 | 53 | -r--r--r-- 1 root root 4096 Feb  8 10:42 power | 
 | 54 | -r--r--r-- 1 root root 4096 Feb  8 10:42 residency | 
 | 55 | -r--r--r-- 1 root root 4096 Feb  8 10:42 time | 
 | 56 | -r--r--r-- 1 root root 4096 Feb  8 10:42 usage | 
 | 57 |  | 
 | 58 | /sys/devices/system/cpu/cpu0/cpuidle/state2: | 
 | 59 | total 0 | 
 | 60 | -r--r--r-- 1 root root 4096 Feb  8 10:42 desc | 
 | 61 | -rw-r--r-- 1 root root 4096 Feb  8 10:42 disable | 
 | 62 | -r--r--r-- 1 root root 4096 Feb  8 10:42 latency | 
 | 63 | -r--r--r-- 1 root root 4096 Feb  8 10:42 name | 
 | 64 | -r--r--r-- 1 root root 4096 Feb  8 10:42 power | 
 | 65 | -r--r--r-- 1 root root 4096 Feb  8 10:42 residency | 
 | 66 | -r--r--r-- 1 root root 4096 Feb  8 10:42 time | 
 | 67 | -r--r--r-- 1 root root 4096 Feb  8 10:42 usage | 
 | 68 |  | 
 | 69 | /sys/devices/system/cpu/cpu0/cpuidle/state3: | 
 | 70 | total 0 | 
 | 71 | -r--r--r-- 1 root root 4096 Feb  8 10:42 desc | 
 | 72 | -rw-r--r-- 1 root root 4096 Feb  8 10:42 disable | 
 | 73 | -r--r--r-- 1 root root 4096 Feb  8 10:42 latency | 
 | 74 | -r--r--r-- 1 root root 4096 Feb  8 10:42 name | 
 | 75 | -r--r--r-- 1 root root 4096 Feb  8 10:42 power | 
 | 76 | -r--r--r-- 1 root root 4096 Feb  8 10:42 residency | 
 | 77 | -r--r--r-- 1 root root 4096 Feb  8 10:42 time | 
 | 78 | -r--r--r-- 1 root root 4096 Feb  8 10:42 usage | 
 | 79 | -------------------------------------------------------------------------------- | 
 | 80 |  | 
 | 81 |  | 
 | 82 | * desc : Small description about the idle state (string) | 
 | 83 | * disable : Option to disable this idle state (bool) -> see note below | 
 | 84 | * latency : Latency to exit out of this idle state (in microseconds) | 
 | 85 | * residency : Time after which a state becomes more effecient than any | 
 | 86 |   shallower state (in microseconds) | 
 | 87 | * name : Name of the idle state (string) | 
 | 88 | * power : Power consumed while in this idle state (in milliwatts) | 
 | 89 | * time : Total time spent in this idle state (in microseconds) | 
 | 90 | * usage : Number of times this state was entered (count) | 
 | 91 |  | 
 | 92 | Note: | 
 | 93 | The behavior and the effect of the disable variable depends on the | 
 | 94 | implementation of a particular governor. In the ladder governor, for | 
 | 95 | example, it is not coherent, i.e. if one is disabling a light state, | 
 | 96 | then all deeper states are disabled as well, but the disable variable | 
 | 97 | does not reflect it. Likewise, if one enables a deep state but a lighter | 
 | 98 | state still is disabled, then this has no effect. |