CPU频率监控

cpupower 获取CPU频率数据

cpupower 工具提供了一个 monitor 命令参数可以实时显示所有处理器核心的CPU频率

  • 没有任何参数执行:

    cpupower monitor
    

则输出所有列信息,类似:

             | Nehalem                   || SandyBridge        || Mperf              || Idle_Stats
PKG|CORE| CPU| C3   | C6   | PC3  | PC6   || C7   | PC2  | PC7   || C0   | Cx   | Freq  || POLL | C1   | C1E  | C3   | C6
  0|   0|   0|  0.46| 63.41|  0.00|  0.00||  0.00|  0.00|  0.00|| 11.80| 88.20|  1305||  0.00|  0.44|  0.83|  2.67| 84.93
  0|   0|  24|  0.46| 63.50|  0.00|  0.00||  0.00|  0.00|  0.00||  7.14| 92.86|  1411||  0.00|  0.70|  0.76|  0.94| 90.82
  0|   1|   1|  0.52| 79.61|  0.00|  0.00||  0.00|  0.00|  0.00||  1.78| 98.22|  1221||  0.00|  2.74|  1.25|  0.11| 94.57
  0|   1|  25|  0.52| 79.69|  0.00|  0.00||  0.00|  0.00|  0.00||  5.08| 94.92|  1210||  0.00|  0.56|  0.74|  0.85| 92.98
...
  • 可以指定显示指定监控项,一般我们会查看主频(位于 Mperf 监控项):

    cpupower monitor -m Mperf
    

则输出类似:

             | Mperf
PKG|CORE| CPU| C0   | Cx   | Freq
  0|   0|   0|  2.63| 97.37|  1198
  0|   0|  24|  5.19| 94.81|  1198
  0|   1|   1|  1.58| 98.42|  1198
  0|   1|  25|  3.51| 96.49|  1198
  0|   2|   2|  1.20| 98.80|  1218
  0|   2|  26|  5.33| 94.67|  1200
...

最后一列是各个CPU core当前主频,是从处理器MSR寄存器读取数值,所有精度有一定保证,可以作为CPU主频监控数据读取

  • 如果要持续观察,可以结合 watch 命令:

    watch cpupower monitor -m Mperf
    

/proc/cpuinfo 提供了CPU频率数据

  • 执行以下命令可以从 /proc/cpuinfo 获取当前CPU核心主频数据:

    cat /proc/cpuinfo  | grep "cpu MHz"
    

输出类似:

cpu MHz              : 1203.530
cpu MHz              : 1198.710
cpu MHz              : 1220.605
cpu MHz              : 1407.477
...