7

perfmon では、各コアの使用率と、特定のプロセスが使用している合計 CPU の量を確認できます。ただし、プロセスがコアごとに使用している CPU の量を確認する方法が見つからないようです。

この情報を表示する組み込みの方法はありますか? これをプログラムで確認する方法はありますか? (C# 推奨) この質問をすることで、Windows (Vista) がコアの使用とコンテキストの切り替えをどのように処理するかについて誤解を示していますか?

編集:私が知りたいことのより明確な説明。プロセスが (クアッド コアで) 合計 CPU を 30 ~ 40% しか使用していないのは、マルチスレッド化されていないため、より多くの CPU を使用できないためですか? それとも、I/O バウンドが多すぎてディスク アクセスがボトルネックになっているためですか?

それで、これを行う方法はまったくありませんか?(コンピュータで他の CPU アクティビティが発生していないことを確認する以外)

4

2 に答える 2

2

特定のプロセスのプロセッサごとのサイクル時間を直接取得することはできませんが、時間の経過とともに推定できますQueryIdleProcessorCycleTime(すべての論理プロセッサ、つまりコアのアイドル時間を返すため) QueryProcessCycleTime。アイドリング プロセスが実行されています。

于 2009-03-12T16:09:37.550 に答える
2

Process Explorer は、少なくとも特定のプロセスのスレッドと、それらが使用している CPU の量を表示できます。たぶん、スレッドが実行されているコア/CPUを取得して、合計することができます。ただし、WinAPI の経験はあまりありません。そのため、プロセッサ アフィニティはプロセスでしかクエリできない可能性があります。

于 2009-03-12T15:58:26.407 に答える