2024年4月10日水曜日

タスクマネージャ上のCPUの「速度」

 タスクマネージャでCPUの乱の下部に、こんな感じで表示される「速度」。

黄みどり色のまるで囲ったところです。
(ピンクのまるで囲った「使用率」については前回の記事で触れたところです。)

この「速度」、CPUのコアがいっぱいあって、しかもコアごとに全部周波数が違うってえのにどこの「速度」なんでしょうね、と。

実際にはコアごとの平均らしいです。

で、パフォーマンスカウンタの「Processor Information」に「% Processor Performance」というのがあって、_Totalのインスタンスから平均値を100倍した値(percentだから)が取得できます。

何に対してのパーセンテージなのかというと、茶色のまるで囲んだ「基本速度」です。
「基本速度」をプログラムから取得するなら、たとえばパフォーマンスカウンタで取得するなら「Processor Information」の「Processor Frequency」を取得するか、WQLでWMIから取得するなら、
SELECT MaxClockSpeed FROM Win32_Processor;
とかで取得して1000で割ります(取得できる値がMHz単位なので)。

で、
「% Processor Performance」/ 100 *「Processor Frequency」/ 1000

という式を計算すると、黄緑のまるで囲った値(GHz)が得られます。

自力でこれらを計算する場合はintelの場合はコアごとにIA32_APERFとIA32_MPERFとTSC周波数とで何とかするのは見当がつきますがTSC周波数の計算も面倒だし、そもそも今はやりのAMDとかになるとさっぱりわかりません。FreeBSDやLinuxのcpufreqのソースが参考になるのかな。

それだけです。
ここまでお読みいただいてありがとうございました。

0 件のコメント:

コメントを投稿