web-dev-qa-db-ja.com

Windowsサーバーがスワップしているかどうかを確認するにはどうすればよいですか?

一部のデータを再構築している間、Process Explorerを使用してWindowsサーバーを監視しています。これは主にCPUを集中的に使用するプロセスですが、スワッピングしないようにしたいと思います。プロセスエクスプローラーを使用しているかどうかを確認するにはどうすればよいですか?私の最初の推測は、システム情報ウィンドウにあります、それはページングファイル書き込みデルタです。はい?番号?私はアホです?

*スクリーンショットはサーバーのものではありません...単なる例です。

代替テキストhttp://www.malwareinfo.org/bootcamp/img/ProcessExplorer2.jpg

30
churnd

「Pages Input/secは監視するカウンターですが、ウィンドウは* nixesのようにページファイルを使用しないため、「スワップ」について心配する必要はありません。

まず、Windowsページが表示されないことを理解する必要があります。 Eric Lippertsブログの投稿 の関連部分を引用します(少し編集しました)。

「RAMは単なるパフォーマンス最適化と見なすことができます。情報が光速に近い速度で伝播する電界に格納されているRAM内のデータへのアクセスは、情報が巨大で重い場所に格納されているディスク上のデータにアクセスするよりもはるかに高速です。非鉄金属分子

オペレーティングシステムは、どのプロセスから最も頻繁にアクセスされているストレージのページを追跡し、それらのコピーをRAMに作成して、速度を向上させます。プロセスが現在RAMにキャッシュされていないページに対応するポインターにアクセスすると、オペレーティングシステムは「ページフォールト」を実行し、ディスクに移動して、ディスクからRAMにページのコピーを作成します。すぐにまたアクセスされる予定です。

オペレーティングシステムは、読み取り専用リソースの共有についても非常にスマートです。 2つのプロセスが両方とも同じDLLから同じコードページをロードする場合、オペレーティングシステムは2つのプロセス間でRAMキャッシュを共有できます。コードはおそらくどちらでも変更されないため、プロセス、RAMの重複ページを共有することで保存することは完全に賢明です。

しかし、巧妙な共有を使用しても、最終的にこのキャッシュシステムはRAMを使い果たしてしまいます。これが発生すると、オペレーティングシステムは、すぐに再度アクセスされる可能性が最も低いページを推測し、変更されている場合はディスクに書き込み、そのRAMを解放して読み込みますすぐに再びアクセスされる可能性が高いもの。

オペレーティングシステムが誤って推測した場合、または可能性が高い場合は、実行中のすべてのプロセスで頻繁にアクセスされるすべてのページを保存するだけの十分なRAMがない場合、マシンは「スラッシング」を開始します。オペレーティングシステムは、高価なディスクストレージの書き込みと読み取りに常に時間を費やしており、ディスクは常に動作しているため、作業を行う必要はありません。

これは、「RAM不足」が「メモリ不足」エラーになることはほとんどないことも意味します。エラーの代わりに、ストレージが実際にディスク上にあるという事実の全コストが突然関連するようになるため、パフォーマンスが低下します。

これを別の見方をすると、プログラムが消費する仮想メモリの総量は、実際にはそのパフォーマンスとあまり関係がないということです。関連するのは、消費された仮想メモリの総量ではなく、(1)他のプロセスと共有されていないメモリの量、(2)一般的に使用されるページの「ワーキングセット」の大きさ、および( 3)すべてのアクティブプロセスのワーキングセットが使用可能なRAMよりも大きいかどうか。

ここまでで、「メモリ不足」エラーは通常、物理メモリの量、または利用可能なストレージの量とは関係がないのは明らかです。ほとんどの場合、32ビットWindowsではアドレススペースが比較的小さく、簡単に断片化されるアドレススペースについてです。 」

追加のポイント:

  1. dllとプログラムファイルは常にページインされるだけで、すでにディスク上にあるため決してページアウトされません(通常、物理RAMが少なくなると最初のページが解放されます)
  2. 他のメモリの問題(すでに述べたように全体的なパフォーマンスの低下を除く)よりも、空きページテーブルエントリが不足したり、メモリの断片化が著しく進んだりする
  3. ページファイルなしで実行した場合でも、ページフォルトが発生する可能性があります
  4. 一般的に言えば、コミットされたメモリを見ると、プロセスがメモリをどのように使用するかがわかります

windowsでのメモリ管理のしくみの完全な図については、

Windows NTの仮想メモリマネージャ

メモリの問題があると思われる場合は、まずこのプレゼンテーションを Windowsメモリのトラブルシューティング で見ることをお勧めします

メモリの断片化が原因ではないのに、「メモリ不足」になることがある理由を説明します。

参照 Windowsの限界に挑む:物理メモリ

仮想メモリ、メモリの断片化とリーク、およびWOW64の詳細

RAM、仮想メモリ、ページファイルなど(Microsoftのサポート)

更新:

Windows 10はメモリに関して少し異なる処理を行い、時間が経つと「システムと圧縮メモリ」と呼ばれるプロセスが表示されます。Windows10はページングアウトリストに「圧縮ストア」を追加します。このRAMは、システムが所有するUSERメモリです(通常、システムにはカーネルメモリしかありませんでした)このメモリは、平均して約30%削減されるように圧縮されています。これにより、より多くのページをメモリに格納できるようになります(計算を70%多いスペースで行う人向け)。メモリにまだ圧力がかかっている場合は、圧縮ストア(ユーザーモードのシステムプロセススペース)のページを変更したページに配置できます。物理ページファイルに書き込むことができるリスト(圧縮)。システムは、それらがシステムユーザーモードスペースからのものであり、圧縮されていることを確認し、ストアに戻そうとしません。したがって、Windows 10システムでは、システムがRAMを吸い込んでいるように見えるかもしれませんが、実際にはRAMをより効率的に使用しようとしています。 Macユーザーは2013年から同様の機能を使用しており、Linuxカーネルの新しいバージョンではメモリ圧縮のバージョンを採用しています。メモリを節約するこの方法は優れているだけでなく、他のオペレーティングシステムでもすでに一般的です。

32
Jim B

はい、ページングデルタは、サーバーがページング(または「スワッピング」)している量をライブで表示しますが、その瞬間のみです。これをさらに詳しく見て、履歴ビューを表示するには、Performance Monitor(perfmon.exeを使用することをお勧めしますそれらのデルタ(および特定のイベントやアクティビティをページングアクティビティのスパイクと関連付けるのに役立つ可能性のあるその他のパフォーマンスカウンター)をグラフ化または記録します。

6

パフォーマンスモニター(perfmon)は、あなたの友達です。ハードページフォールト(つまり、要求を満たすために必要なメモリページをディスクから読み取る必要がある場合のページフォールト)を探しているため、ハードページフォールトとソフトページフォールトの両方の監視は最適ではありません。

Perfmonを使用して "Memory"オブジェクトの "Pages Input/sec"カウンターを監視し、発生しているハードページフォールトの数を確認します。

5
Evan Anderson

経験則として、コミットチャージが物理メモリよりも高い場合、ページングは​​間違いなくsomethingですが、アプリが常に使用されている単一の固定データバッファーを使用している場合、通常はページアウトされません。このためのスペースを確保するために他のメモリがページアウトされている間、起動時に多少の遅延が生じる可能性があります。

0
Maximus Minimus