为什么CPU频率时序统计信息全为零?

为什么CPU频率时序统计信息全为零?

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 或更高版本)应该可以解决问题。

相关内容