
Windows Server 2012R2 システムでプロセスの CPU 使用率を測定する最適な方法を見つけようとしましたが、使用率を測定するために使用される方法には多くの矛盾があることがわかりました。
当初、CPU 使用率を確認するためにタスク マネージャーを調べましたが、タスク マネージャーでは使用率のスナップショットしか表示されず、一定期間のデータが表示されませんでした。そこで、procmon やプロセス エクスプローラーなどの他のツールを使用することにしましたが、どちらも同じ数値を報告せず、プロセス間の順位も報告しませんでした。
矛盾点は次のとおりです。
1) タスク マネージャーの「プロセス」タブと「詳細」タブには、「%CPU 使用率」の値とそれらのプロセス間の順位がまったく異なります。たとえば、プロセス タブには次のように表示されます。
- %24 の
- 123.exe %10
- %3 の
一方、「詳細」タブには次の内容が表示されます。
- アイドル %55 (これは奇数部分ではありません)
- sdf.exe %11
- ert.exe %9
- %7 の
2) プロセス エクスプローラーの CPU% には、タスク マネージャーの [プロセス] タブと [詳細] タブの両方と比較して異なる値が表示されます。値が遅れて表示されたり、若干の矛盾が生じたりする場合があることは承知していますが、上記の例のように、3 つの場所すべてに表示される値はほぼ完全に異なります。
3) プロセス モニターは、CPU 使用率の観点から見たプロセスのランキングに関しても一貫性のない情報を提供します。ProcMon はプロセスのパーセンテージ値を提供しませんが、それらのプロセス間のランキング (CPU 時間の観点から) は、プロセス エクスプローラーやタスク マネージャーのランキングと一致しません。
要約すると、質問は次のようになります。これらの測定値のうちどれがプロセス間の CPU 使用率を最も正確に表すのでしょうか。また、その理由は何でしょうか。
答え1
最も正確なのは Process Explorer です。その理由は次のとおりです。
- デフォルトでは整数ではなく小数点2桁の解像度に丸められたプロセスごとのCPU使用率のパーセンテージが表示されます。
- 割り込みと DPC の処理に費やされた時間を追跡し、アイドル プロセスとは別に表示します (タスク マネージャーではこれを行いません)
- 追加のシステムメトリックを使用して、CPUを少量消費するプロセスを識別し、可能な場合は実際のCPU消費量をより正確に把握できるようにします。
PE は詳細なツールであり、Mark Russinovich と Aaron Margosis 著の『Windows Sysinternals Administrator's Reference』では、最も詳細な情報を表示するためのツールとして紹介されています。
編集: 割り込みを追跡する機能は、ソフトウェアのデバッグや障害のあるドライバーの検出など、他のタスクにも非常に役立ちます。