ハードページフォールトを調査しているときに、これに遭遇しました。オブジェクトメモリとプロセスは、同じカウンターから異なる値を提供します:ページフォールト/秒。パフォーマンスモニターオブジェクトプロセスによって監視されないページフォールトを引き起こすOS関連のプロセスはありますか? Process\Page Faults/secが常にMemory Page Faults/secを下回るのはなぜですか?
カウンタ Memory => Page Faults/sec
は、システム全体のページ不在の数を表します。ソフト障害とハード障害の両方。ユーザーモードとカーネルモードの両方。
一方、カウンターProcess => Page Faults/sec
は、マシンで実行されているすべてのユーザーモードプロセスのインスタンスを持つカウンターのセットです。したがって、1つの特定のプロセスで発生したページフォールトを検査できます。または、_Total
インスタンスを使用して、実行中のすべてのプロセスで発生したすべてのページフォールトの合計を取得します。
ただし、選択した場合でも_Total
、まだユーザーモードプロセスで発生したページフォールトのみを取得できます。カーネルのページフォールトではありません(デバイスドライバーなど)。
ページフォールトは、CPU IRQL 0(すべてのユーザーモードとほとんどのカーネルモード)または1(カーネルAPCとページフォールト)で満たすことができますが、IRQL 2(ディスパッチ)以上ではページフォールトを満たせません。
ページフォールトには、ソフトフォールトとハードフォールトの2つの種類があります。ハードフォールトは、ハードフォールトを満たすためにディスク(スワップファイル)にアクセスする必要があるため、深刻なパフォーマンスの低下を引き起こす可能性があるフォールトです。ページはまだRAM=どこかにあるため、ソフトフォールトはそれほど悪くありません。それはプロセスのワーキングセット内になく、メインメモリ内の他の場所から取得する必要があります。ディスク。
そう Process => Page Faults/sec => _Total
は、実行中のすべてのユーザーモードプロセスによって発生したすべてのページフォールトの合計です。 Memory => Page Faults/sec
はplus追加のカーネルモードページ違反です。