cpufreq-aperf
「cpufreq-aperf」コマンドは、CPUの平均的なクロック数や動作時間を表示するコマンドです。指定された時間ごとに継続的に情報を表示しますが、一度だけ情報を表示してコマンドを終了させることもできます。
msrドライバーについて
「cpufreq-aperf」コマンドを利用するには、「msr」ドライバーを有効にする必要があります。「msr」ドライバーは自動的に読み込まれないため、「cpufreq-aperf」コマンドを利用する前に以下のコマンドを実行する必要があります。
sudo modprobe msr
ちなみにこのコマンドでドライバーを有効にしても、PCを再起動すると「msr」ドライバーは無効になります。
PC再起動後に「msr」ドライバーを有効にしたい場合、このコマンドを再度実行するか、「/etc/modules」に「msr」を記述する必要があります。
「msr」ドライバーが有効になっていない場合、「cpufreq-aperf」コマンド実行時に以下のエラーが表示されます。
Error reading /dev/cpu/0/msr, load/enable msr.ko
ちなみに「msr」ドライバーは同梱されていますが、このドライバーに対応していないCPUでは利用できません。
cpufreq-aperfコマンドの実行
「cpufreq-aperf」コマンドはrootで実行する必要があります。端末を起動し、以下のコマンドを実行します。
sudo cpufreq-aperf
以下のように、1秒おきに結果が表示されます。
コマンドを終了したい場合は、「Ctrl + C」キーを押してください。
上記から一部抜粋します。
CPU | Average freq(KHz) | Time in C0 | Time in Cx | C0 percentage |
---|---|---|---|---|
000 | 1598470 | 00 sec 304 ms | 00 sec 695 ms | C0 percentage |
CPU
論理コアの番号です。Core i7 2600は8つ論理コアがあるので、000 〜 007まで表示されます。
Average freq(KHz)
指定された時間内での平均クロック数です。デフォルトは1秒なので、1秒辺りの平均クロック数です。
単位は「KHz」です。
Time in C0
CPUがC0ステートだった時間です。C0ステートはCPUが実行中の状態のことです。
従って1秒のうち304ms(ミリ秒)CPUが動作していた、ということになります。
Time in Cx
CPUがC1以降のステートだった時間です。 (=C0ステートではない時間)C1以降のステートは、CPUがアイドル状態です。
従って1秒のうち695(ミリ秒)CPUがアイドル状態だった、ということになります。
「Time in C0 + Time in Cx ≒ 指定された時間」になります。
デフォルトは1秒なので、304ms + 695ms = 999ms(ほぼ1秒)になります。
C0 percentage
CPUがC0ステートだった割合です。システムモニターのCPU使用率に近いイメージです。
「Time in C0 / 指定された時間(ms) * 100」です。
小数点以下切り捨てです。
コマンドオプション
「cpufreq-aperf」コマンドのオプションです。-c
情報を表示するCPU(論理コア)を指定します。一度に複数のCPU(論理コア)を指定することはできません。
「-c」オプションを指定した場合、ログは流れず常に上書きされます。
-i
情報を取得・表示する時間を指定します。単位は「秒」です。