.. _cpufreq_monitor: ================== 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 ...