マルチコアのCPU使用率の取得 – プログラミング – Home

マルチコアのCPU使用率の取得
 
通知
すべてクリア

[解決済] マルチコアのCPU使用率の取得


Solar
 Solar
(@Solar)
ゲスト
結合: 16年前
投稿: 3
 

VC2008 SDKにて自アプリのCPU使用率を取得したく色々調べてます。

初期段階の設定で
HQUERY hQuery;
HCOUNTER hCounter;
PDH_FMT_COUNTERVALUE FmtValue;

PdhOpenQuery(NULL, 0, &hQuery);
PdhAddCounter(hQuery, L\\Process(hoge)\\% Processor Time, 0, &hCounte);
PdhCollectQueryDataEx(hQuery,1,NULL);

とし、タイマーで定期的に
PdhGetFormattedCounterValue(hCounter, PDH_FMT_LONG, NULL, &FmtValue);
を実行し
FmtValueのlongValueの値を見てみました。

負荷をかけるスレッドを1つ起動して、タスクマネージャーの値と見比べると
タスクマネージャーでは当然ですが、CPU使用率が50%となりました。
しかし、この時上記記述では100として取得しました。
負荷を色々変えて実験したら、タスクマネージャーで表示されるCPU使用率の2倍の
値を取得してるようです。
1つのコアの使用率としては正解なのですが、タスクマネージャーで表示されている
CPU使用率を取得したいと思ってます。

ちなみに負荷をかけるスレッドを2つ用意し1つは100%、もう1つは80%の負荷として
動作させたらタスクマネージャーでは90%と表示されますが、上記コードでは
やはり100として取得しています。

色々調べた結果
PdhAddCounter(hQuery, L\\Thread(hoge/0)\\% Processor Time, 0, &hCounte);
PdhAddCounter(hQuery, L\\Thread(hoge/1)\\% Processor Time, 0, &hCounte);
とすればスレッド単位でのCPU使用率が取得できるので、これから計算すれば正しい
CPU使用率が算出できるのですが、スレッド数を意識せずトータルのCPU使用率を
取得できる方法はないでしょうか?


引用未解決
トピックタグ

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました