这CPU频率时间统计数据全为零:
$ sort --unique /sys/devices/system/cpu/cpu*/cpufreq/stats/time_in_state | column
1600000 0 2100000 0 2600000 0 3100000 0
1700000 0 2200000 0 2800000 0 3300000 0
1900000 0 2400000 0 2900000 0 3400000 0
2000000 0 2500000 0 3000000 0 3401000 0
这怎么可能?难道真的没有任何时间花费在任何状态下吗?
细节
/proc/cpuinfo
CPU 显然正在频率状态之间转换:
$ grep --perl-regexp --only-matching '(?<=cpu MHz\t\t: )[\d.]+' /proc/cpuinfo | column 1600.000 1600.000 3401.000 1600.000 2900.000 1600.000 2100.000 1600.000 $ while sleep 10; do column /sys/devices/system/cpu/cpu*/cpufreq/stats/total_trans; done 17839 17278 17497 17336 12332 14358 14054 17647 17885 17313 17545 17384 12359 14394 14082 17691 17888 17323 17556 17391 12359 14399 14085 17693 17904 17336 17576 17417 12374 14402 14091 17696
其他人问过这个但从未收到回复。
答案1
Linux 内核 3.11 中存在此问题。此错误已通过以下补丁修复:
http://permalink.gmane.org/gmane.linux.kernel.cpufreq/11672%3E
https://lkml.org/lkml/2013/9/7/126
升级内核(至 3.12-rc1 或更高版本)应该可以解决问题。