タスクマネージャで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 件のコメント:
コメントを投稿