-1

重複の可能性:
WMI と C# を使用した CPU 使用率

WMIを使用してC#(.NET)でCPU使用率を取得する方法は? はい、ばかげた PerformanceCounter なしで。

4

1 に答える 1

6

PerformanceCounterは、この情報を取得するための非常に低コストの方法です。まったく同じ情報を提供するWMIとは対照的に、COM上で実行されるため、多くのオーバーヘッドが発生します。

そして、それはPCとまったく同じ問題を抱えているので、あなたはそれが「ばかげている」と思う理由だと思います。CPU使用率は、一定の間隔で測定されます。実際のCPU使用率は0または100%であり、CPUが意図的に低いレートで実行されることはありません。やるべき仕事があるスレッドがあるとき、それはフルボアでコードを実行します。デスクトップマシンの通常の状態である作業がない場合は、HLT命令でCPUの電源がオフになります。時計の割り込みで再び目覚めます。

TaskMgrまたはPermonに表示されるCPU使用率は、1秒間の計算値です。100%で実行されていた時間と、オフにされた時間の比率。間隔の長さは非常に重要です。短くするほど、計算値は「ジャンパー」になります。NextValue()を2回続けて呼び出すと、常に100%になります。

簡単に言うと、タイマーが必要です。PerfMonとTaskMgrに表示されるものをエミュレートするのに1秒かかります。

于 2010-11-09T15:22:30.107 に答える