web-dev-qa-db-ja.com

空き物理RAMがあるのになぜWindows 7がページファイルを使用するのですか?

私は8G RAMとWindows 7 64ビットを使用しています。使用した後、Windowsが低迷しているように感じます。ドライブはスラッシングです。リソースモニターとディスクアクティビティを見ると、ページファイル(c:\ pagefile.sys)の使用例がいくつかあります。物理メモリを確認したところ、2.3Gの空きメモリと700Mの空きメモリがありました。

なぜWindowsは空きメモリを増やし、ページファイルを減らさないのですか?それはいくらかの量のフリーラムを残す必要がありますか、それはいくらでしょうか?それは物理的なRAMの割合ですか?

私の計画は、メインドライブ用のRAMとSSDを増やすことです。その間、私は遅いパフォーマンスに苦しんでいます。

43
Tony_Henrich

まず、ページファイルをSSDに置かないでください。 SSDはウェアレベリングについては良くなっていますが、ページファイルは頻繁にに書き込まれ、一般的な使用よりもSSDの劣化が早くなります。

多くの人が理解していないことは、ウィンドウが本当に空きメモリを持っていないということです。バースト要求に備えて空き容量が確保されているMBはいくつかありますが、それ以外の場合は、アクティブな使用中のアプリケーションメモリと総メモリとの差は、一般に「スタンバイ」メモリと呼ばれるものによって消費されます。

System memory

これらは、必要に応じてダンプできるメモリページです(スタンバイメモリは素晴らしい、大きなキャッシュです)。そのため、アプリケーションの観点から見ると利用可能ですが、決して使用されているわけではありません。通常、これらはディスクキャッシュまたはページファイルキャッシュとして機能します。

Windowsの目標は、使用パターンに基づいて、このスタンバイキャッシュで使用される可能性が最も高いデータを維持することです。考案された例を使用するには、デスクトップの内容をこのスタンバイメモリにキャッシュして、Windows Updateなどのプログラムのプライベートメモリ(通常は1週間に1回実行するように構成されている)の相対値を比較しましょう。

ほとんどの場合、Windows Updateはスリープ状態にあります。それはメモリを保持していて、大部分はスケジュールが実行されるのを待っている間それを使っても全く価値のないことをしています。一方、デスクトップフォルダの内容は、特にファイルを保存したい場合には常に照会される可能性があります。

この場合、Windowsが行うことは、Windows Updateに割り当てられたメモリをページアウトすることです(メモリが「いっぱい」でなくても)、デスクトップの内容をキャッシュするためにRAMで利用可能なスペースを使用します。これにより、パフォーマンスが向上します。

Windowsは何千ものこれらの決定を下し、バックグラウンドサービスによって絶えず書き込まれている何百ものファイルのディスクキャッシュを管理しながら、これをアクティブなアプリケーションのメモリ要求とバランスさせようとしています。しばらくの間は間違ってしまうことがあります。バックグラウンドでしばらくスリープ状態になっているアプリケーションに切り替えると、データがページングされてメモリに戻るのを待つ必要があります。しかし、そのアプリケーションを完全にメモリ内に保持していた場合、ディスクの書き込みと読み取りが完了するのを待っているアプリケーションが他にいくつあるのか、それともページアウトを強制されるのでしょうか。その間に使用していたアプリケーションがそれらであったとしたらどうでしょうか。


アプリケーションは、起動コード(1回使用した後に不要)、シャットダウンコード(1回使用した後に不要)、更新コードなど、使用頻度の低いメモリページを頻繁に割り当てます。もっと重要な用途があるときにこれらすべてをメモリに保持するのは現実的ではないので、Windowsがアプリケーションの現在の操作に必要ではなかったコードのセクションを識別すると、たとえ技術的にはそれらをメモリに保持することができます。

(そして実際には、アプリケーションによっては、システムが実際よりも多くのメモリを割り当てることが多く、ページアウトされることが予想されます。詳細なメモリの内訳を見ている場合は、「Commit」または「Commit」の請求Windowsがさまざまなアプリケーションに割り当てるメモリ量は、それをカバーするのに十分な物理RAMがなくても、pagefileを使用してこのメ​​モリを保証します。


私はちょうどあなたがあなたの質問で利用可能なメモリと空きメモリを区別したことに気づいた。あなたが講義を受けていてすでに違いを知っていたら私の謝罪。理想的には、空きメモリは常に0です。ただし、スタンバイメモリは解放できるメモリですが、すぐに解放できるメモリは常にありません。 1GBのファイルをディスクに書き込もうとすると、Windowsは可能であればそれをメモリ内のディスクキャッシュに保存し、その後バックグラウンドでハードドライブにゆっくり書き出します。アプリケーションが50MBの追加メモリを要求する必要があるが、この巨大なディスクキャッシュがまだフラッシュされているために利用できない場合、アプリケーションは利用可能になるまでハングします。小さなバッファを用意しておくことで、システムはユーザーの立場からの遅れを最小にしてこの問題を解決することができます。 Windowsがスタンバイキャッシュの一部を空にしたか、使用中のメモリを大量に解放しただけで、まだ新しいキャッシュデータがいっぱいになっていない場合は、通常よりも大きいバッファを使用することもあります。

33
Darth Android

SysInternalによってディスクキャッシュを設定するためのツールがあります。

cacheset.exe

あなたはそれをここで見つけることができます:

http://technet.Microsoft.com/ja-jp/sysinternals/bb897561.aspx

4
Raffaello

それは先の計画と呼ばれます。

RAMがまだたくさんあるときにメモリページをページファイルに書き込むのは良いことです。プログラムが空き容量よりも多くのメモリを要求するとすぐに、OSはできるだけ早く領域の消去を開始できます。後で準備するほうがいいです。

OSが待たされると、パフォーマンスのボトルネックに遭遇します。プログラムが利用可能なメモリよりも多くのメモリを要求した場合、今度はOSが変更されたメモリブロックを書き出すまで待ってから解放しなければなりません。

4
surfasb

過去7年間、ページファイルを無効にしています。実際には、私がフレッシュインストールの後に私が最初にすることです。それに問題があったことはありません。 (実は私は "titan quest"と呼ばれる1ゲームで起動時に非常に愚かなチェックを行ったので、4 MBのページファイルを作成してそれを幸せにし、後でPFをオフにしました)。元の質問は。 Windowsは、ディスクI/OキャッシュにRAMを使用します。何らかの理由で、ディスクキャッシュはアクティブなプログラムのコードとデータにも同様に重要であると考えています。そして、ディスクキャッシュサイズを制限する方法はありません。それは設計によるものであり、我々はそれについて何もすることができません...ああ、待って!私たちはできる!ページファイルをオフにするだけです。 RAMが重いアプリケーションを実行していますか?さらにRAMを購入するか、あるアプリケーションを閉じてから別のアプリケーションを起動してください。 Process Explorerを使用して、特定の時点におけるメモリ使用量を確認できます。個人的に私は仕事(vmware + virtualbox + Eclipse + Firefox + delphi + Adob​​e Premiere + skype +その他のバックグラウンドプログラム)と自宅(重いゲーム)の両方で8 GB RAMを持っています。前回、 "メモリ不足"という警告が表示されました。

2
Anton Duzenko

ページファイルを保持して使用するための引数( ここ および ここ ) RAMが十分にある場合でも、

  • 現在空きメモリがある場合でも、後でマシンがメモリ不足になる可能性があります。メモリの使用されていない部分を事前にディスクにドロップする方が適切です。
  • 空きとして表示されますが、実際にはディスクキャッシュに使用される "スタンバイ"メモリもあります。パフォーマンスの面でも重要です。
  • ページファイルを無効にした状態でRAMを使い果たした場合、それはハードクラッシュです。
  • 2、4、16、またはその他の数のRAMのGbは "たくさん"のように見えるかもしれませんが、これはあなたが信じるほど本当ではないかもしれません。あなたはプロファイルする必要があります。

Windowsリソースモニタを使用すると、RAMがキャッシュに使用されている量を確認できます( "スタンバイ"として表示)。

RAMが実際に使用されているかスタンバイ状態にあることがわかった場合は、ページファイルが役立ちます。あなたのタスクと利用可能なRAMの組み合わせが、メモリの大部分が未使用( "Free")と表示されるようなものであれば、ハードドライブを誰かから研ぐ必要はないと思いますよく知っていてここでそう言った "。

1
h22