web-dev-qa-db-ja.com

パフォーマンスモニター:Memory \ Page Faults / sec vs Process \ Page Faults / sec

ハードページフォールトを調査しているときに、これに遭遇しました。オブジェクトメモリとプロセスは、同じカウンターから異なる値を提供します:ページフォールト/秒。パフォーマンスモニターオブジェクトプロセスによって監視されないページフォールトを引き起こすOS関連のプロセスはありますか? Process\Page Faults/secが常にMemory Page Faults/secを下回るのはなぜですか?

スクリーンショットパフォーマンスモニター

3
Ynias Reynders

カウンタ 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/secplus追加のカーネルモードページ違反です。

3
Ryan Ries