web-dev-qa-db-ja.com

Windowsの「iowait」CPU使用率レポート

WindowsはLinuxと同じように " iowait" を考慮して報告しますか?つまり、プロセスは「割り込み不可能なスリープ」に入り、費やされた時間は「CPUフリー」から差し引かれますか?

もしそうなら、「計算によるCPUビジー?」ではなく、「IOのサービス遅延によるCPUビジー?」を検出するのに適切なPerfmonカウンターはどれですか。

9
Yolo Perdiem

Windowsカーネルの概念の一部はLinuxの概念と大幅に異なります。これが、Perfmonにiowaitカウンターが表示されない理由です。

まず、Windowsでのスケジューリングのエンティティは、プロセスではなくスレッドです。プロセスは、1つ以上のスレッドのコンテナーにすぎません。さらに、Windowsはそのスレッドに対して割り込み不可能なスリープ状態を定義していません(より正確には、すべてのI/O要求は、たとえば同じプロセスの別のスレッドによって割り込み可能です)。したがって、正確なiowaitはありません。 Windowsプラットフォームの対応物。 Windowsは、スレッドが同期I/O要求を発行するとすぐにスケジューラーによってコンテキストが切り替えられるだけなので、スレッドが同期I/Oを待機している時間を「アイドル」として報告します。

特定のデバイスでのI/O操作に費やされた合計時間に関心がある場合は、この期間内に処理されたそれぞれの要求の数とともに 待機時間関連のカウンター を確認する必要があります時間。ただし、これにより、同期アクセスパターンと非同期アクセスパターンでそれを分解することはできません。

9
the-wabbit