一、 /sys/devices/system/cpu/cpu0 目录结构
/sys/devices/system/cpu/cpu0
Z91:/sys/devices/system/cpu/cpu0 # ls -al
ls -al
total 0
drwxr-xr-x 5 root root 0 2018-01-09 11:17 .
drwxr-xr-x 13 root root 0 2018-01-09 11:17 ..
lrwxrwxrwx 1 root root 0 2018-01-09 11:17 cpufreq -> ../cpufreq/policy0
drwxr-xr-x 5 root root 0 2018-01-09 11:17 cpuidle
lrwxrwxrwx 1 root root 0 2018-01-09 11:17 of_node -> ../../../../firmware/de
vicetree/base/cpus/cpu@0
-rw-r--r-- 1 root root 4096 2018-01-09 11:17 online
drwxr-xr-x 2 root root 0 2018-01-09 11:17 power
lrwxrwxrwx 1 root root 0 2018-01-09 11:17 subsystem -> ../../../../bus/cpu
drwxr-xr-x 2 root root 0 2018-01-09 11:17 topology
-rw-r--r-- 1 root root 4096 2018-01-09 11:17 uevent
我们可以获取到什么信息
二、重要信息获取
1. CPU 频率
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
cat cpuinfo_cur_freq
299000
2.CPU 所支持的主频率列表(KHZ)
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_available_frequencies
cat scaling_available_frequencies
1274000 1235000 1196000 1170000 1105000 1053000 1001000 962000 910000 845000 702
000 624000 546000 416000 338000 299000
CPU 调频需要选择对应的档位,且参数不同机器该配置不同
3.CPU 策略policy
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_available_governors
cat scaling_available_governors
ondemand userspace powersave interactive performance sched
- ondemand 表示使用内核提供的功能,可以动态调节频率
- userspace 表示用户模式,在此模式下允许其他用户程序调节CPU频率
- powersvae 表示省电模式,通常是在最低频率下运行
- interactive ondemand相似,规则是“快升慢降”
- performance 表示不降频,最高性能
- sched 基于调度器的 CPU 调频机制
4.查看当前 CPU 的运行模式
通过echo命令,能够改变当前处理器的governor类型
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_governor
cat scaling_governor
sched
三、 目录详情
1. cpufreq
查询结果如下
Z91:/sys/devices/system/cpu/cpu0/cpufreq # ls -al
ls -al
total 0
drwxr-xr-x 4 root root 0 2018-01-09 11:17 .
drwxr-xr-x 3 root root 0 2018-01-09 11:17 ..
-r--r--r-- 1 root root 4096 2018-01-09 11:17 affected_cpus
-r-------- 1 root root 4096 2018-01-09 11:17 cpuinfo_cur_freq
-r--r--r-- 1 root root 4096 2018-01-09 11:17 cpuinfo_max_freq
-r--r--r-- 1 root root 4096 2018-01-09 11:17 cpuinfo_min_freq
-r--r--r-- 1 root root 4096 2018-01-09 11:17 cpuinfo_transition_latency
-r--r--r-- 1 root root 4096 2018-01-09 11:17 related_cpus
-r--r--r-- 1 root root 4096 2018-01-09 11:17 scaling_available_frequencies
-r--r--r-- 1 root root 4096 2018-01-09 11:17 scaling_available_governors
-r--r--r-- 1 root root 4096 2018-01-09 11:17 scaling_cur_freq
-r--r--r-- 1 root root 4096 2018-01-09 11:17 scaling_driver
-rw-r--r-- 1 root root 4096 2018-01-09 11:17 scaling_governor
-rw-rw-r-- 1 system system 4096 2018-01-09 11:17 scaling_max_freq
-rw-rw-r-- 1 system system 4096 2018-01-09 11:17 scaling_min_freq
-rw-r--r-- 1 root root 4096 2018-01-09 11:17 scaling_setspeed
drwxr-xr-x 2 root root 0 2018-01-10 11:27 sched
drwxr-xr-x 2 root root 0 2018-01-09 11:17 stats
1.1 affected_cpus
需要软件协调频率的CPU列表
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat affected_cpus
cat affected_cpus
0 1 2 3
1.2 cpuinfo_cur_freq
获取当前 CPU 频率,这个参数非常重要,单位 KHz
cat cpuinfo_cur_freq
299000
因为我现在待机 所以现在的频率是 299 MHZ
1.3 cpuinfo_max_freq
获取 CPU 最大频率,单位 KHz
该文件指定了处理器能够运行的最高工作频率 (单位: 千赫兹)
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat cpuinfo_max_freq
cat cpuinfo_max_freq
1274000
1.3 cpuinfo_min_freq
获取 CPU 最小频率,单位 KHz
该文件指定了处理器能够运行的最低工作频率 (单位: 千赫兹)
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat cpuinfo_min_freq
cat cpuinfo_min_freq
299000
1.4 cpuinfo_transition_latency
该文件定义了处理器在两个不同频率之间切换时所需要的时间 (单位: 纳秒)
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat cpuinfo_transition_latency
cat cpuinfo_transition_latency
1000
1.5 related_cpus
需要软件或者硬件来协调频率的CPU列表
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat related_cpus
cat related_cpus
0 1 2 3
1.6 scaling_available_frequencies
所有支持的主频率列表 (单位: 千赫兹)
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_available_frequencies
cat scaling_available_frequencies
1274000 1235000 1196000 1170000 1105000 1053000 1001000 962000 910000 845000 702
000 624000 546000 416000 338000 299000
1.7 scaling_available_governors
该文件显示当前内核中支持的所有cpufreq governor类型
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_available_governors
cat scaling_available_governors
ondemand userspace powersave interactive performance sched
- ondemand
userspace 是内核态的检测,效率低。而 ondemand 正是人们长期以来希望看到的一个完全在内核态下工作并且能够以更加细粒度的时间间隔对系统负载情况进行采样分析的 governor - userspace
最早的 cpufreq 子系统通过 userspace governor 为用户提供了这种灵活性。系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。(可以使用 Dominik 等人开发了 cpufrequtils 工具包 ) - powersave
CPU 会固定工作在其支持的最低运行频率上。因此这两种 governors 都属于静态 governor ,即在使用它们时 CPU 的运行频率不会根据系统运行时负载的变化动态作出调整。这两种 governors 对应的是两种极端的应用场景,使用 performancegovernor 体现的是对系统高性能的最大追求,而使用 powersave governor 则是对系统低功耗的最大追求。 - interactive
和ondemand相似,规则是“快升慢降”,注重响应速度、性能,当有高需求时迅速跳到高频率,
当低需求时逐渐降低频率,相比ondemand费电 - performance
高性能模式,按你设定范围的最高频率运行,即使系统负载非常低cpu的频率也为最高。性能
很好,因为CPU本身不需要资源去调整频率,但是电量消耗较快,温度也高一些。 - sched
http://kernel.meizu.com/cpufreq-sched.html
1.8 scaling_cur_freq
被governor和cpufreq核决定的当前CPU工作频率。该频率是内核认为该CPU当前运行的主频率
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_cur_freq
cat scaling_cur_freq
1274000
1.9 scaling_driver
该文件显示该CPU正在使用何种cpufreq driver
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_driver
cat scaling_driver
mt-cpufreq
1.10 scaling_governor
通过echo命令,能够改变当前处理器的governor类型
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_governor
cat scaling_governor
sched
1.11 scaling_max_freq
显示当前policy的上下限 (单位: 千赫兹)需要注意的是,当改变cpu policy时,需要首先设置scaling_max_freq, 然后才是scaling_min_freq
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_max_freq
cat scaling_max_freq
1274000
1.12 scaling_min_freq
显示当前policy的上下限 (单位: 千赫兹)需要注意的是,当改变cpu policy时,需要首先设置scaling_max_freq, 然后才是scaling_min_freq
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_min_freq
cat scaling_min_freq
299000
1.13 scaling_setspeed
如果用户选择了“userspace” governor, 那么可以设置cpu工作主频率到某一个指定值。只需要这个值在scaling_min_freq 和 scaling_max_freq之间即可。
Z91:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_setspeed
cat scaling_setspeed
<unsupported>
因为当前不是 userspace 模式
1.14 sched
Z91:/sys/devices/system/cpu/cpu0/cpufreq/sched # ls -all
ls -all
total 0
drwxr-xr-x 2 root root 0 2018-01-10 11:27 .
drwxr-xr-x 4 root root 0 2018-01-09 11:17 ..
-rw-r--r-- 1 root root 4096 2018-01-10 12:22 down_throttle_nsec
-rw-r--r-- 1 root root 4096 2018-01-10 12:22 up_throttle_nsec
1.14.1 down_throttle_nsec
Z91:/sys/devices/system/cpu/cpu0/cpufreq/sched # cat down_throttle_nsec
cat down_throttle_nsec
20000000
1.14.1 up_throttle_nsec
Z91:/sys/devices/system/cpu/cpu0/cpufreq/sched # cat up_throttle_nsec
cat up_throttle_nsec
500000
1.15 stats
Z91:/sys/devices/system/cpu/cpu0/cpufreq/stats # ls -all
ls -all
total 0
drwxr-xr-x 2 root root 0 2018-01-09 11:17 .
drwxr-xr-x 4 root root 0 2018-01-09 11:17 ..
-r--r--r-- 1 root root 4096 2018-01-09 11:17 time_in_state
-r--r--r-- 1 root root 4096 2018-01-09 11:17 total_trans
-r--r--r-- 1 root root 4096 2018-01-09 11:17 trans_table
1.15.1 time_in_state
Z91:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat time_in_state
cat time_in_state
1274000 1057346
1235000 33219
1196000 20219
1170000 41032
1105000 34062
1053000 37278
1001000 30385
962000 46199
910000 48913
845000 147837
702000 108755
624000 129635
546000 78269
416000 171114
338000 15087
299000 3972384
1.15.2 total_trans
Z91:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat total_trans
cat total_trans
1153632
1.15.2 trans_table
Z91:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat trans_table
cat trans_table
From : To
: 1274000 1235000 1196000 1170000 1105000 1053000 1001000
962000 910000 845000 702000 624000 546000 416000 338000
299000
1274000: 0 19712 8008 11909 7249 5888 3298
3599 3750 6019 2287 2004 2780 1618 864
16976
1235000: 47991 0 1062 905 528 480 731
722 608 927 331 241 223 141 58
1790
1196000: 9775 22038 0 1266 368 287 212
558 418 662 233 180 179 76 36
723
1170000: 10841 8681 22196 0 1327 726 528
1266 1537 2117 690 460 444 241 84
2127
1105000: 3938 2860 3531 26213 0 997 449
589 1759 2135 779 486 435 198 84
1580
1053000: 2675 561 822 8157 26093 0 862
709 886 3464 1286 852 771 290 117
1188
1001000: 1520 389 206 1456 5465 25137 0
839 578 2184 1219 824 670 222 95
1185
962000: 1819 316 259 874 2466 9771 26210
0 1164 3954 3321 2459 2122 623 241
1590
910000: 1478 179 144 551 831 2857 5709
28786 0 3188 2200 1907 1664 398 169
1920
845000: 3241 223 138 482 551 1356 2945
18420 35571 0 5817 9752 18461 6007 1297
9549
702000: 1664 94 48 146 131 219 291
614 3661 48204 0 2999 12205 7513 1760
9835
624000: 1197 77 50 145 202 290 220
284 504 14517 34878 0 6134 7161 2090
14598
546000: 1515 90 50 135 124 134 104
141 323 23033 22378 10003 0 9147 3872
16603
416000: 1057 135 124 371 326 271 132
207 354 1335 12254 46620 12103 0 4261
51129
338000: 269 29 18 24 21 19 18
25 59 173 216 1234 13100 4073 0
5532
299000: 6981 1354 355 631 351 301 280
429 809 1898 1495 2327 16361 92971 9782
0