web-dev-qa-db-ja.com

RAMがたくさんある場合はスワップファイルを無効にする必要がありますか。それとも仮想RAMドライブに移動する必要がありますか?

RAMがたくさんあると想像してください。 64GBだとしましょう。それはゲーム用のPCでも大したことです。現在、Windowsのページファイルのデフォルトの場所はメインのOSドライブにあります。一般には高速ですが、RAMほど高速ではありません。

ハードドライブ上のページファイルを無効にするか、仮想RAMドライブを作成してそこに置くと、Windowsがすべての仮想メモリをRAMに移動できるため、システムのパフォーマンスが向上する可能性があります。その分野に精通しているわけではないので、まったくそうではないかもしれません。

両方試してみましたが、結果を分析して記憶レベルの知識レベルで明確な結論に達することはできませんでした。

これでうまくいくでしょうか。そうでない場合、なぜですか?

95
user1306322

たとえどれだけRAMを持っていても、システムがそれを効率的に使用できるようにしたいのです。ページングファイルがまったくないと、オペレーティングシステムはRAMを非効率的に使用することになります。その理由は2つあります。第一に、たとえアクセスや修正が非常に長い間行われていなくても、ページを破棄できないため、ディスクキャッシュが小さくなります。第二に、物理的なRAMを必要とする可能性が非常に低い後方割り当て(たとえば、プライベートで変更可能なファイルマッピング)に予約する必要があるため、十分な空き物理_を持つことができます。RAM、まだ割り当てはオーバーコミットを避けるために拒否されています。

たとえば、プログラムが4GBファイルの書き込み可能なプライベートメモリマッピングを作成したとします。 OSはこのマッピング用に4GBのRAMを予約する必要があります。これは、プログラムがすべてのバイトを変更する可能性があり、それを格納する場所はRAM以外にないためです。したがって、すぐに4GBのRAMが基本的に無駄になります(クリーンなディスクページをキャッシュするために使用できますが、それだけです)。

たとえ一度も使用されていなくても、RAMを最大限に活用したい場合は、ページファイルが必要です。これは、オペレーティングシステムが実際には持っているRAMを使用することを可能にする保険ポリシーとして機能します。

あなたのオペレーティングシステムのふるまいを設計した人々は愚か者ではありません。ページングファイルがあると、オペレーティングシステムにより多くの選択肢が与えられ、悪いものにはなりません。

ページングファイルをRAMに入れようとしても意味がありません。そして、もしあなたが大量のRAMを持っているのであれば、ページングファイルは使用される可能性は非常に低い(それがそこにあるだけでよい)ので、それがオンになっているデバイスの速度は特に問題にならない。

133
David Schwartz

あなたの仮定は完全に正しいです。

メモリ管理アルゴリズムは非常に複雑であり、決して完璧ではありません。そのため、スペアRAMが十分にある場合でもスワッピングが発生します。 Linuxのような一部のシステムでは、 swappiness を制御できますが、他のシステムでは制御できません。 RAMがまだ十分にあるときにデータを交換することにより、システムは独自の方法でRAMが不足する可能性がある状況に備えます。

したがって、スワッピング機能を無効にすると、RAMのみを使用するため、パフォーマンスが向上する可能性があります。

考慮すべきことの1つ(そして、既に言及していること)-実行しているすべてのプログラムに対応するためにenoughRAMが必要ですそれ以外の場合は、 メモリ不足 を実行するリスクがあります。この場合、パフォーマンスが低下し、OSによって一部のプロセスが終了し、システムがクラッシュ/フリーズする可能性があります。 (それについてもっと読む ここ

一部のマシン、特にSSDではなくHDDにスワップファイルを保持するマシンでは、スワッピングを無効にしたことによる効果が非常に顕著です。他の人にはそれほど明白ではありません。ただし、明らかな改善が得られない場合でも、別の方法で考えてください。スワップを無効にすることで、SSDのディスク領域を節約できます。

スワップを無効にすることで、メモリアルゴリズムが不必要な操作を行うことを防ぐことができます-RAMからスワップへ、またはその逆にデータを移動します-SSDの場合、これは過度の摩耗を防ぎます。いずれにせよ、これは不必要な操作を排除することでパフォーマンスを改善します。

また、読んでください:

31
Art Gertner

あなたは安全にページファイルを無効にすることができますか?

仮想メモリを含む空きメモリがなくなると、システムは確定的な実行を保証できなくなり、終了します。それが起こる前に、オペレーションシステムは、あまりにも多くのメモリを使用するプログラムを強制終了するなど、他のさまざまなことをします。私が言いたいのは、メモリは常に有限であり、すべてのOSがこれに対処できるということです。したがって、使用可能なメモリの合計を64 GBに制限してもWindowsに害はありません。1または2 GBのRAMの場合、ページファイルは通常6または7よりはるかに小さいため、多くのシステムでページファイルを使用しても8 GBを超えることはできません。 GB注意しなければならないのは、未使用のRAMが大量にある限り、ページファイルを管理するOSのオーバーヘッドは測定できないということです。

ページファイルをRAMディスクに置くことは意味がありますか?

利用可能なメモリを増やすために、すべての先進的オペレーティングシステムがRAMに入っていてしばらくアクセスされていないメモリを使用するスワップファイルを使用しているわけではありません。 ページファイル )をクリックし、RAMからメモリを削除して、より高速のメモリを使用できるようにします。スワップファイルは、使用可能なRAMのサイズを超えてメモリの最大サイズを拡張するために使用されます。

したがって、(使用可能なメモリーをramdiskのサイズだけ減らす)RAMディスクを使用してスワップファイルをホストする(使用可能なメモリーをスワップファイルのサイズだけ増やす)ことはできますが、意味がありません。ページファイルを無効にするよりも多くのメモリを提供することはありませんが、それでもシステムはページングアルゴリズムを実行する必要があります。

14
Peter

他の人が言ったことを繰り返すために、スワップをまっすぐなRAMディスクに移動することはやや無意味です(最も一般的なケースでは、下記を参照してください)。ある時点で、システムが空きメモリを枯渇させると、一部のデータがRAMからRAMにかなり非効率的な方法で移動されることがわかります。

HDD/SSDをスワップすることで、OSがいくつかの完全に未使用のRAMページを消去して、解放されたスペースを使用できるようになります。ファイルキャッシュまたは他のシステムバッファ。ページファイルがないと使用可能な仮想メモリがないため、システムがこれらのRAMバッファを少なく割り当てていることに気付かないかもしれません。だから事実上あなたはスワップを無効にすることであなたのパフォーマンスを妨げているかもしれません。

ただし、スワップドライブとして圧縮されたRAMディスクは、 "ZSWAP"ドライブである場合があります。 RAMのセグメントのスペース効率をある程度向上させることで、HDDへのスワップを回避するために、追加のMB RAMをいくつか追加するだけで済みます。

8
demonkoryu

あなたがページファイルを持っていないなら、BSOD(クラッシュ)の場合には、Windowsはクラッシュダンプファイルを書き込めません。つまり、適切なツールを使用して問題を分析することはできません。

クラッシュでクラッシュする可能性があるため、RAMにページファイルを配置しても意味がありません。

詳細については、Microsoftの記事 「クラッシュダンプファイルについて」 を参照してください。

5
harrymc

Windowsの場合、馬の口から:

ページングファイルがないとパフォーマンスが向上すると感じる人もいますが、一般に、ページングファイルがあると、Windowsは変更リスト(アクティブにアクセスされていないがディスクに保存されていないページ)にページを書き込むことができます。ファイルをページングすることで、そのメモリをより有用な目的(プロセスまたはファイルキャッシュ)に利用できるようにします。したがって、ページングファイルがないとパフォーマンスが向上するワークロードがいくつかあるかもしれませんが、一般に、システムで使用可能なメモリ*が多いことを意味します(ページングファイルサイズなしでWindowsがカーネルクラッシュダンプを書き込むことはできません)。それらを保持するのに十分な大きさ)。

https://blogs.technet.Microsoft.com/markrussinovich/2008/11/17/pushing-the-limits-of-windows-virtual-memory/

  • 使用可能なメモリ - 仮想メモリを使用することをお勧めしますが、ページファイル/仮想メモリを使用しないことで確実に利益を得るには、本当に大量のRAMが必要であることを示唆しています。私はページファイルのない4GB RAM 128GB SSDを持っています、しかし私はウェブ閲覧とWord文書をタイプするためにそれを使います。
4
user127379

スワップファイルを無効にしないでくださいそれはあなたがメモリを使い果たしたときだけのためのものではありません。 オフにしても直接パフォーマンスは向上しません。Windowsは必要なときにのみ読み取り、常に書き込みを行うので、いつでも必要なときに使用できます。

あなたがそれが圧縮されたメモリイメージを保存するので、あなたが約4GB以上あるならば、あなたはそれをメモリサイズの約2/3に減らすことができます。 SSDにスペースがない場合は、他の大容量ディスクアクセスによってアクセスされていない低速のハードドライブに置くことができます。しかし、どこかに持っていることは有益です。

その理由について詳しくは、この回答を参照してください。 https://superuser.com/a/286476/4236

3
JamesRyan

理論的には、ページファイルを RAM にしても意味がないはずです。なぜなら、あなたが得たものを使い果たしているだけなので、Windowsはページファイルはそのような目的には使用されないという前提で構築されています。

しかし実際には、欠陥のある設計と哲学がWindowsカーネルでさえもそれを可能にし、そしてMicrosoftのメモリ管理は必ずしも完璧ではありません。多くの人が、ページファイルをRamdiskに入れると、メモリが十分にある限り、実際にはパフォーマンスが向上することになります。

私はシングルフォーラムのスレッドからそのようなユーザーのコレクションを示す投稿をまとめました。彼らは大量の RAM を持っていてもページファイルはまだ残っていることを発見しました使用されています:

http://www.overclock.net/t/1193401/why-it-is-bad-to-store-the-page-file-on-a-ram-disk/290 #post_23508589

3
Dan W

スワップを使用しないことがコアとなるように設計されたOSを変換するのは、想像以上に困難です。

最近のMacにはリカバリパーティションがあります。これはメインドライブの一部で、メインシステムを修復または復元することができるOSの一部が省略されています。 DVDインストーラーの時代にはカスタムプロセスが実行されていましたが、インストーラーが使用可能な作業ディスクスペースを確保することは保証できないため、システムはスワップパーティション用のRAMディスクを作成します。 OSには、インストール後に使用可能なユーティリティと同じ、付属のメンテナンスソフトウェアを実行するために必要なフレームワークが含まれています。皆のための仕事はずっと少ない。

システムを一度に1つのアプリケーションに制限するということは、ramdisk-swapが基本的に決して使用されないことを意味しますが、OSはそれが存在することを期待しています。

2
peter

十分なメモリがあれば、答えは「はい」になります。スワップをオフにすることができます。スワップは、RAMの制限を克服し、その使用をより効率的にするために作成されました。

今の質問はRAMが十分なRAMであるということですか?これに対する普遍的な答えはなく、本質的にシステムはメモリに対して不器用です。それゆえ、そしてあなたが非常に特殊で制御された環境で走っていない限り、スワップをオフにしないでください。

スワップをRAMにするなどの他の種類のスタントは、余分な複雑さの層を作成し、それ以外の場合は直接使用される可能性があるメモリを消費するだけです。

2
nsn

ページファイルをRAMに移動するのはばかげた考えです。それをオフにしてRAMを増やすだけです。 :)

No matter how much RAM you have, you want the system to be able to use it efficiently. Having no paging file at all forces the operating system to use RAM inefficiently for two reasons. First, it can't make pages discardable, even if they haven't been either accessed or modified in a very long time, which forces the disk cache to be smaller. Second, it has to reserve physical RAM to back allocations that are very unlikely to ever require it (for example, a private, modifiable file mapping), leading to a case where you can have plenty of free physical RAM and yet allocations are refused to avoid overcommitting.

Consider, for example, if a program makes a writable, private memory mapping of a 4GB file. The OS has to reserve 4GB of RAM for this mapping, because the program could conceivably modify every byte and there's no place but RAM to store it. So immediately, 4GB of RAM is basically wasted (it can be used to cache clean disk pages, but that's about it).

メモリ管理はCPUによって処理され、ページファイルがオンかオフかによって、ページの処理方法に1つの違いが生じることはありません。 Windowsに対して透過的です。

ページの優先順位は変わらず、ページは同じように破棄されます。ページファイルは、OSではなく、セカンダリストレージとしてCPUによって使用されます。レベル1(RAM)がなくなると、レベル2キャッシュになります。

すばやく汚い例:私のマシンには16GBのRAMがあり、ページファイルはありません。 5分前にスタンバイで13GB、空き容量が2GBのみの場合、フォールアウト4をロードしました。優先度の低いページはフォールアウトのロード時に破棄されました。

ちなみに、Windowsメモリ制限のプッシュに関する2008 Technetブログは非常に誤解を招く恐れがあります。 https://i.stack.imgur.com/wXkmi.png マークでさえそれを書いたかどうかについても疑っていますが、そうしないと、彼の私の視点が変わるでしょう... ..

ちなみに、このブログにはどれくらいの頻度で言及されているのかを考慮して誰も選んだことはないのではないかと思います。

  • ページファイルとその場所はWindowsによって処理され、ディスクにページアウトされた場所へのメモリアクセスのトラップはCPUによってキャッチされますが、ディスクからページを取得してロードするためにオペレーティングシステムに渡されます。

とにかく、それほど曖昧ではない記述があります:

WindowsはCPUよりも高いアドレスに到達できません-それは不可能です。

OSが何を実行できるとしても、実行されるハードウェアによって制限されます。OSは実際にはCPUそのものであるためです(内部レジスタ)。

それで、ページファイルはHDD上の領域であり、CPUが物理的またはアーキテクチャ的にRAMを使用できない場合に拡張物理アドレス空間に使用します。

たとえば、セグメント化されたx86 32ビットアーキテクチャでは、2 GBのRAMセグメントが2つあります。

1つはカーネルに割り当てられます。他の2GBはユーザーモード用です。 CPUが32個のDRAMピンで使用できるRAMすべてですが、32ビットプロセスでは4GBを使用できるため、何をすべきかです。幸運なことに、CPUは2GBの余分なページを保存するためのハードドライブであるセカンダリストレージを使用できます。内部レジスタがあるため
プロセスによって参照される仮想ページをRAMに保存する必要のない物理的な場所。ただし、CPUによってどこかに保存されています。

CPUはすべての4GB RAMをアプリに与えることはできませんが、can HDDを二次キャッシュとして使用して4GBのアドレスを与えます(これは実際にすべてのHDDです)

ページは、内部ページングメカニズムを介してRAMに出入りしますが、これはページファイルとは異なります。ページングは​​常に発生します。..

一番下の行は本当にそれほど複雑ではありません。過去15年ほどの間、多くのエンドユーザーは、ページファイルがオペレーティングシステムの不可欠な一部であるという印象を与えられてきましたが、そうではありません。それはなかった。この誤解は、IntelやMicrosoftのような企業によって部分的に促進されています。

RAMは高速のストレージデバイスであり、ハードドライブは低速のストレージデバイスです。したがって、本質的にRAMはレベル1のキャッシュであり、ハードドライブはレベル2です(この例ではCPUキャッシュは無視します)。両方にCPUからアクセスできます。

CPUが必要なページを保存するのに十分なRAMが利用できない場合、HDDはオーバーフローとして使用できます。 RAMが十分にある場合、PFは冗長です。

コア2まで、Intelプロセッサには32ピンDRAMバス、32レジスタがあり、CPUは4GBのRAMと4GBのHDDスペース(ページファイル)にアクセスできました。これはアーキテクチャ上のハードウェアの制限であり、Windowsの制限ではありません。

ページテーブルは512MBを占有するため、プロセスで使用可能な合計は3.5GBでした。 Intel CPUを搭載したWindowsで3.5 GBが表示されるのはそのためです(コア2まで)。 GPUを追加すると、さらに少なくなります。

Xeonは、合計32GBのRAM、HDDを含む64GBの物理スペースにアクセスできます(ページファイルを再度)。 (この^はPAEを対象としています。--リンクが追加されています)。

enter image description herehttp://www.windowsdevcenter.com/pub/a/windows/2004/04/27/pagefile.html

enter image description here

enter image description here

3番目のスクリーンショットのソース:System V Application Binary Interface AMD64 Architecture Processor Supplement Draft Version 0.99.7

この回答を改善し、ソース資料と関連情報を追加していきます。情報が十分でないことと技術情報が多すぎることのバランスを取りたいです。提案を歓迎します。うまく書かれていない可能性があるからといって、ダウン投票しないでください。

1
Robert Fischer

私のシステムは24GBのRAMを持っています、この理由のために、私は何の問題もなく私のSSDの消耗を防ぐためにページファイルを無効にしました。私は最近、オンラインフラッシュプレーヤーゲームのパフォーマンスと一般的なWebサーフィンを向上させるかどうかを確認するために、4 GBのメモリを使用してGoogle Chrome Cacheファイルを保存するRAMディスクを作成しました。この実験からパフォーマンスが著しく向上しています。 RAMディスクの空き容量が増えたので、ページファイルを有効にして最小サイズと最大サイズを1GBに設定し、それをRAMディスクに移動しました。パフォーマンスが大幅に向上したとは言えませんが、私のシステムはより安定して動作しているようです。

1
Michael