Windows 7/8/10 で RAM をページファイルにコピーする際の積極性を低下させるにはどうすればよいでしょうか?

Windows 7/8/10 で RAM をページファイルにコピーする際の積極性を低下させるにはどうすればよいでしょうか?

多くの人が、私が尋ねる問題の影響を感じているために、ページファイルを無効にする方法を尋ねます。代わりに、ページファイルを無効にせずに問題を解決したいと考えています。

Windows には、ページアウトする必要があると思われるデータをページファイル RAM に保存する機能があります。理論的には、これは緊急時にデータが破壊されるのを防ぐのに役立ちますが、安価なラップトップなど、低速の HDD を搭載したシステムを使用している人にとっては非常に迷惑です。

たとえば、私の現在のコンピュータでは、現在 4.8 GB の RAM が使用されていますが、現在の「コミット チャージ」は約 8 GB です。

Sysinternal ツールを使用して、ページ ファイルの内容のほとんどが RAM 内のもののプリエンプティブ コピーであることがわかりました。RAM の使用量が少ないように見えます (RAM は 8 GB あり、使用率は 61% です)。ただし、RamMap を使用すると、RAM 使用量のほとんどが「スタンバイ」メモリであり、その「スタンバイ」メモリのほとんどが Windows キャッシュ (ファイルの読み込みを高速化するためのもの) であることがわかります。大きなチャンクは、ゲームのサウンド ファイルであるバイナリ ファイルです。

それで、現在何が起こっているかというと、私は何かゲームをプレイします... Windows はそれを RAM に読み込み、他のものをページファイルにコピーします (ゲームのパフォーマンスが低下します)。その後、プレイを停止します。Windows はゲーム ファイルを RAM にキャッシュしたままにします。RAM の使用率が高いため、RAM が不足すると予想して、ページファイルにさらに多くのものを置き続けます。これにより、非常に質の悪い HDD で I/O が絶えず実行されるため、速度が低下します。

しかし、アプリによる実際の RAM 使用量、現在実行中のアプリ、プロセス、カーネル、および使用されている共有のコミット チャージのみを見ると、実際の RAM 使用量は RAM とページファイルを含めて 2.5 GB になるはずです。

そこで、Windows にキャッシュしないように指示する (キャッシュは結構便利です) か、ページファイルを無効にするのではなく、本当に必要な場合 (たとえば、物理 RAM 使用量 - スタンバイ物理 RAM 使用量 > 物理 RAM の 80% の場合) を除いてページファイルを使用しないように指示したいと考えました。

それをどうやってやるか誰か知っていますか?

答え1

いろいろ調べた結果、私が尋ねたことは文字通り不可能であり、Windows の動作を微調整して改善することはできず、実行できる最善のことは文字通りページ ファイルを完全に無効にすることだということがわかりました。

ページ ファイルを無効にすると、パフォーマンスの問題のほとんどが修正され (他のいくつかの問題も発生しましたが)、私の場合はほぼ問題が解決しました。無効にするだけで十分価値がありました。

答え2

残念ながら、これではパフォーマンスが悪くなります。ご承知のとおり、ディスクは遅いです。つまり、ディスク キャッシュとして使用できるメモリをできるだけ多く確保することが重要です。これは、アクセスされていないものを RAM から削除することによってのみ可能であり、そのためにはページ ファイルに書き出す必要があります。

Windows がページファイルを使用してキャッシュ用の RAM を増やしていない場合、キャッシュが減少するため、さらに多くのディスク I/O が必要になります。その結果、パフォーマンスが低下します。

Windows は悪い状況を最大限に活用しています。Windows のメモリ管理システム (Vista 以降) を設計した人々は、自分たちが何をしているかを正確に理解しており、現代のハードウェアのページング システムの設計における第一人者です。あなたも私も彼らより詳しいわけではありません。スイッチを切り替えるだけで修正できるような重大な間違いは何もしていません。申し訳ありませんが、魔法の「高速化」ボタンはありません。

ちなみに、最近の SSD は書き込み耐久性が非常に優れています。そのため、RAM を追加できない場合は、ページファイル用に小型で安価な SSD を追加するのは不合理ではありません。もちろん、メイン ファイルを SSD に保存すると、より大きな違いが生まれます。

答え3

残念ながら、これは実行できません。基本的に、ページファイルを使用するか使用しないかのどちらかしかできず、ページファイルを保存する場所とサイズを選択できますが、スワップアウトされるもののアルゴリズムを制御することはできません。

きっと、あなたは自分が馬鹿で、Microsoft の開発者は常に正しいなどというように、イライラするような回答を与えられたことがあるでしょう。

基本的に、Windows はページファイルからデータを保持するよりもスタンバイ メモリ (読み取りキャッシュ) を優先するようにプログラムされています。スタンバイ キャッシュにあるデータを読み取る可能性があり、その場合、パフォーマンスが向上するという考え方です。

私はこれにあまり同意しません。私の意見は、ライブ データをページ ファイルにスワップ アウトする場合、システムがそのデータをある時点で読み取ることは「避けられない」ことであり、その場合、ページ ファイルから読み取られるため、遅延が発生するということです。さらに、ページ ファイルからの読み取りは、ファイル システムから直接読み取る場合よりもオーバーヘッドが高くなります。

たとえば、私のシステムでは、Windows は常に Nvidia マルチディスプレイ省電力ツールをページアウトします。理由はわかりませんが、アルゴリズムの何かがそのアプリを選択し、RAM 使用率が 5% と低い場合でもページアウトします。

私の意見では、ページ ファイルは災害回避としてのみ使用すべきであり、基本的には swappiness=1 Linux sysctl に似ています。これは基本的に、質問で尋ねていたことと同じです。基本的に、Windows での RAM 使用量で重要な部分は「使用中」と「変更済み」だけです。変更済みは書き込みキャッシュで、クリアする前にデータをディスクにダンプする必要があるのは明らかですが、スタンバイ キャッシュをクリアしても悪影響はありません。

私は 32 ギガバイトの Windows システムでかなりの量のテストを行いましたが、ページ ファイルを有効にしてもパフォーマンスが向上するという証拠はまったく見つかりませんでした。ただし、ページ アウトするアプリを使用しようとすると遅延が発生するため、パフォーマンスが低下することは確認しました。

どちらの方法を取るべきかという質問に対する私の明確な答えは、システムの安定性が主な目的である場合は、ページ ファイルを有効にして、そのサイズを少なくとも 8 GB に設定することです。パフォーマンスが目標であり、特に少なくとも 32 GB の RAM がある場合は、ページ ファイルを必ず無効にしてください。

関連情報