私が大量のRAMを持っていると想像してみてください。64GBとしましょう。ゲーミングPCでも多いですよね。さて、Windowsのページファイルのデフォルトの場所は、HDDであろうとSSDであろうと、メインのOSドライブ上にあり、一般的には高速ですが、それでもRAMには敵いません
何かによると、ハードドライブ上のページファイルを無効にしたり、仮想RAMドライブを作成してページファイルを存在させたりすると、Windowsは仮想メモリをすべてRAMに移動させて、システムのパフォーマンスを向上させることができるそうですが、私はその分野に詳しくないので、そうとは限らないかもしれません
両方やってみましたが、記憶モノの知識レベルでは確定的な結論に至るまでの分析はできませんでした
これでうまくいくのか?そうでない場合は、なぜですか?
99 user1306322 2014-09-11
どんなに多くの RAM を持っていても、システムがそれを効率的に使用できるようにしたいものです。ページングファイルを全く持たないと、オペレーティング・システムは 2 つの理由で RAM を非効率的に使用することになります。第一に、非常に長い間アクセスされたり変更されたりしていなくても、ページを破棄することができないため、ディスクキャッシュが小さくなります。第二に、必要になる可能性が非常に低い割り当て(例えば、プライベートで変更可能なファイルマッピングなど)をバックアップするために物理RAMを確保しなければならないため、空きの物理RAMを十分に確保できているにもかかわらず、割り当てが拒否されてオーバーコミットを避けることができないというケースが発生してしまいます
例えば、あるプログラムが4GBのファイルに書き込み可能なプライベート・メモリ・マッピングを作成した場合を考えてみましょう。OSはこのマッピングのために4GBのRAMを確保しなければなりませんが、これはプログラムがすべてのバイトを変更する可能性があり、RAM以外にそれを保存する場所がないからです。そのため、すぐに、4GBのRAMは基本的に無駄になってしまいます(クリーンなディスクページをキャッシュするために使うこともできますが、それはそれで終わりです)
RAMを最大限に活用したい場合は、たとえ一度も使用していなくても、ページファイルが必要です。これは、OSが持っているRAMを実際に使用できるようにするための保険のような役割を果たします
オペレーティングシステムの動作を設計した人たちは馬鹿ではありません。ページングファイルを持つことで、オペレーティングシステムはより多くの選択肢を与え、それは悪いものを作ることはありません
ページングファイルを RAM に入れようとしても意味がありません。RAM をたくさん持っている場合、ページングファイルが使われる可能性は非常に低いので(そこにあるだけでいいのです)、デバイスがどれだけ高速であるかは特に問題ではありません
137 David Schwartz 2014-09-11
あなたの思い込みは完全に正しい
メモリ管理アルゴリズムは非常に複雑で、決して完璧ではありません。そのため、予備の RAM が十分にある場合でもスワップが発生します。Linux
のように、スワップ性を制御できるシステムもあれば、制御できないシステムもあります。まだRAMに余裕があるときにデータをスワップアウトすることで、システムはそれなりにRAMを使い果たすかもしれない状況に備えています
そのため、スワップ機能を無効にすると、あなたがすでに言ったように、より高速なRAMのみを使用することになるので、パフォーマンスが向上するかもしれません
考慮すべきことが一つあります (そして、あなたはすでにそれに言及しました) – あなたが実行しているすべてのプログラムを収容するのに十分なRAMを持っている必要があり、そうでなければ、out of memoryを実行する危険性があります。この場合、パフォーマンスが低下し、いくつかのプロセスがOSによって終了し、システムがクラッシュ/フリーズする可能性があります。(こちら)
一部のマシン、特にスワップファイルをSSDではなくHDDに保存しているマシンでは、スワップを無効にすることによる影響が非常に顕著に現れます。他のマシンでは、それはそれほど明白ではありません。しかし、明らかな改善が得られなくても、別の方法で考えてみてください。スワップを無効にすることで、SSDのディスク容量を節約することができます
スワッピングを無効にすることで、メモリアルゴリズムがRAMからスワップにデータを移動したり、その逆を行ったりすることを防ぐことができます。そして、いずれにしても、不要な操作を排除することでパフォーマンスを向上させることができます
Also, read:
- Windows スワップ(ページファイル)。有効にするか無効にするか?
- https://askubuntu.com/questions/157793/why-is-swap-being-used-even-though-i-have-plenty-of-free-ram
34 Art Gertner 2014-09-11
ページファイルを安全に無効にすることはできますか?
仮想メモリを含めた空きメモリを使い切ってしまうと、決定論的な実行を保証し続けることができず、システムは自己終了してしまいます。そうなる前に、オペレーションシステムはメモリを使いすぎるプログラムを殺すなど、他にもいろいろなことをしてくれます。何が言いたいかというと、メモリは常に有限であり、どのOSもこれに対処できるということです。多くのシステムでは、ページファイルを使用しても8GBを超えることはできません。なぜなら、1,2GBのRAMでは、ページファイルは通常6,7GBよりもずっと小さいからです。あなたが未使用のRAMの過剰な量を持っている限り、ページファイルを維持するOSのオーバーヘッドは測定可能ではないことに注意する必要があります
pagefileをramdiskに置くのは意味があるのでしょうか?
使用可能なメモリを増やすために、ほとんどの先進的なオペレーティングシステムでは、 RAM にあるメモリのうちしばらくアクセスされていないものを取り込んでハードディスクに書き込み (swapfile 別名 pagefile)、RAM からメモリを削除して、より高速なメモリを使用できるようにしています。スワップファイルは、使用可能なRAMのサイズを超えてメモリの最大サイズを拡張するために使用されます
したがって、スワップファイル(スワップファイルのサイズによって利用可能なメモリが増加する)をホストするためにラムディスク(ラムディスクのサイズによって利用可能なメモリが減少する)を使用することはうまくいくだろうが、それは多くの意味をなさないだろう。ページファイルを無効にするよりも多くのメモリを提供することはできませんが、それでもシステムがページングアルゴリズムを実行する必要があります
14 Peter 2014-09-11
他の人が言っていることを繰り返しますが、スワップをストレート RAM ディスクに移動させることは、かなり無意味です(最も一般的なケースでは、以下を参照してください)。これは、ある時点で、システムが空きメモリに飢えているときに、いくつかのデータをかなり非効率的な方法でRAMからRAMに移動させることを実現しています
HDD/SSD上でスワップを使用することで、OSは完全に使用されていないRAMページをクリアして、空き領域をファイルキャッシュや他のシステムバッファなどに使用することができます。あなたがページファイルなしで利用可能な仮想メモリを持っていないため、システムがこれらのRAMバッファのより少ない割り当てを認識していないかもしれません;ので、実質的には、スワップを無効にすることによって、あなたのパフォーマンスを阻害している可能性があります
しかし、スワップドライブとしての圧縮RAMディスク、「ZSWAP」ドライブは、RAMのセグメントのスペース効率をある程度改善することで、エッジケース(HDDへのスワップを避けるために数MBのRAMを追加する必要があるだけかもしれない)では有益な場合があります
8 demonkoryu 2014-09-11
理論的には、ページファイルをRAMに入れても全く意味がないはずです。なぜなら、得られるはずのものを枯渇させているだけで、Windowsはページファイルがそのような目的で使用されないことを前提に構築されているからです
しかし、実際には、欠陥のある設計や哲学が Windows カーネルにまで入り込むことがあり、マイクロソフトのメモリ管理は必ずしも完璧ではありません。多くの人が、ページファイルをラムディスクに入れることで、まともな量のメモリを持っている限り、確かにパフォーマンスが向上することを発見しています
私は、膨大な量のRAMの空きを持っているにもかかわらず、ページファイルがまだ使用されていることを発見した1つのフォーラムのスレッドから、そのようなユーザーのコレクションを示す記事をコンパイルしました
5 Dan W 2015-02-07
ページファイルを持っていない場合、BSOD(クラッシュ)が発生した場合、Windowsはクラッシュダンプファイルを書き込むことができません。つまり、適切なツールを使って問題を分析することができなくなります
ページファイルをRAMに保存しておくことは、クラッシュで失われる可能性があるので、ほとんど意味がありません
詳細については、Microsoft の記事 Understanding Crash Dump Files を参照してください
5 harrymc 2015-02-07
Windowsの場合は、馬の口から
ページングファイルを持たない方がパフォーマンスが向上すると考える人もいますが、一般的には、ページングファイルを持つことで、Windows は変更されたリストのページ(アクティブにアクセスされていないがディスクに保存されていないページを表す)をページングファイルに書き出すことができ、そのメモリをより有用な目的(プロセスやファイルキャッシュ)のために利用できるようになります。そのため、ページングファイルがない方がパフォーマンスが良いワークロードもあるかもしれませんが、一般的には、ページングファイルがある方がシステムで使用可能なメモリ*が増えることを意味します(Windows はカーネルのクラッシュダンプを保持するのに十分なサイズのページングファイルがないと書き込めないことを忘れないでください)
- 使用可能なメモリ – ので、これは仮想メモリを持つことをお勧めしますが、それはまた、ページファイル/仮想メモリを持たないことの恩恵を確実に受けるためには、本当に大量のRAMが必要であることを示唆しています。私は4GB RAM 128GB SSDにページファイルがないのですが、Webブラウジングやワード文書の入力に使用しています
4 user127379 2016-03-04
スワップファイルを無効にしないでください それはあなたがメモリを使い果たしたときのためだけではありません。それをオフにすることで直接的なパフォーマンスの向上はありません, Windowsはそれが必要なときにそれから読み取るだけ, それはそれが必要なときはいつでも準備ができているので、それはそれにすべての時間を書き込む
メモリイメージを圧縮して保存してくれるので、4GBくらいあれば2/3くらいまで減らせます。SSDに空きがなければ、他の重いディスクアクセスをしていない遅いハードディスクに入れてもいいでしょう。しかし、どこかに置いておくとメリットがあります
理由については、この回答を参照してください。https://superuser.com/a/286476/4236
3 JamesRyan 2014-09-11
私のシステムには24GBのRAMがありますが、このため、問題なくSSDの消耗を防ぐためにページファイルを無効にしました。最近、4GBのメモリを使ってRAMディスクを作成し、Google Chromeのキャッシュファイルを保存して、オンラインFlash Playerゲームや一般的なウェブサーフィンのパフォーマンスを向上させるかどうかを確認しました。私はこの実験からパフォーマンスの顕著な増加を見ている。RAMディスクの空き容量に余裕があったので、ページファイルを有効にして、最小サイズと最大サイズの両方を1GBに設定し、RAMディスクに移動しました。性能が上がったとは言えませんが、システムが安定して動くようになったように思います
3 Michael 2015-02-07
あなたが十分なメモリを持っている場合は、答えははい、あなたはスワップをオフにすることができます。スワップはRAMの限界を克服し、より効率的に使用するために作られました
問題は、どのくらいのRAMがあれば十分なのかということです。これには普遍的な答えはなく、システムは本質的にメモリが不足しています。したがって、あなたが非常に特殊で制御された環境で実行している場合を除き、スワップをオフにしないでください
RAM上にスワップを置くような他の種類のスタントは、単に複雑さの余分な層を作成し、そうでなければ直接使用することができたメモリを費やすだけです
3 nsn 2014-09-15
その核心部で設計されたOSをスワップを使わないように変換するのは、見た目よりもずっと難しいです
最近のMacはリカバリパーティションを持っています – メインシステムを修復または復元することができますストリップダウンされたOSとメインドライブの一部。DVD-installerの時代にはカスタムプロセスを実行していましたが、今ではシステムがスワップパーティション用のRAMdiskを作成するようになりました。OSには、インストール後に利用可能なユーティリティと同じ、付属のメンテナンスソフトウェアを実行するために必要なフレームワークが含まれています。誰にとっても手間が大幅に減ります
システムを一度に1つのアプリケーションに限定するということは、基本的にラムディスクスワップは使用されないが、OSはそれを期待しているということだ
2 peter 2014-09-12
ページファイルを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によって処理され、ページファイルがオンであるかオフであるかは、ページがどのように扱われるかに全く違いはありません。Windowsには透過的です
ページの優先順位は変わらず、ページは同じように破棄されます。ページファイルはCPUがセカンダリストレージとして使用するものであり、OSではありません。レベル1(RAM)がなくなったときに、レベル2のキャッシュになるだけです
私のマシンには16GBのRAMがあり、ページファイルがありません。5分前に13GBをスタンバイして2GBしか空いていない状態でFallout 4をロードしました。 優先度の低いページはFalloutのロードに合わせて破棄されました
余談ですが、2008年の Technet Blog on Pushing Windows Memory Limits は非常に誤解を招く内容です。https://i.stack.imgur.com/wXkmi.png マークが書いたのかどうかも怪しいが、そうでないことを願う
Fwiw 記事には穴が開いていて、そのブログがどれだけの頻度で参照されているかを考えると、誰も取り上げていないことに唖然とした
- ページファイルとその場所はWindowsによって処理され、ディスクにページアウトされた場所へのメモリアクセスのトラップはCPUによってキャッチされますが、ディスクからページを取得してロードするためにオペレーティングシステムに渡されます
とにかくここには、そう漠然とした説明ではないものがあります
WindowsはCPUよりも高いアドレスには到達できません – それは不可能です
OSがどのような能力を持っていても、それはまだそれが実行されるハードウェアによって制限されています
つまり、ページファイルはHDD上の領域で、物理的にもアーキテクチャ的にももっとRAMを使えない場合にCPUが物理アドレス空間を拡張するために使用する領域です
例えば、セグメント化されたx86 32bitアーキテクチャでは、2GBのRAMセグメントが2つあります
1つはカーネルに割り当てられています。残りの2GBはユーザーモード用。これが32のDRAMピンでCPUが使用できる全てのRAMですが、32bitプロセスでは4GBが使用可能なので、どうすればいいのでしょうか。幸いなことに、CPUは2GBの余分なページを保存するためのセカンダリストレージ、別名ハードドライブを使用することができます。内部レジスタがあるので、プロセスが参照する仮想ページの物理的な位置はRAMに保存する必要はありません。しかし、CPUによってどこかに保存されている必要があります
CPUは4GBのRAMを全てアプリに与えることはできませんが、HDDをセカンダリキャッシュにすることで4GBのアドレスを与えることができます(これが本当の意味でのHDDの全てです)
ページは内部のページング機構を介してRAMから出入りしますが、これはページファイルとは異なります。ページングは常に発生します
結論から言うと、それほど複雑ではありません。ここ15年ほどの間、多くのエンドユーザーは、ページファイルがオペレーティングシステムの一部であるかのような印象を与えられてきましたが、そうではありません。決してそうではありません。この誤解は、インテルやマイクロソフトなどの企業によって一部で煽られています
RAMは高速なストレージデバイスであり、ハードドライブは低速なストレージデバイスであるため、基本的にRAMはレベル1のキャッシュであり、ハードドライブはレベル2です(この類推のためにCPUのキャッシュは無視します)。どちらもCPUからアクセスすることができます
CPUが必要なページを保存するのに十分なRAMがない場合は、HDDをオーバーフローとして使用することができます。RAMに余裕があれば、PFは冗長になります
Core 2までは、Intelプロセッサは32ピンDRAMバスと32レジスタを搭載していたため、CPUは4GBのRAMと4GBのHDDスペース(ページファイル)にアクセスすることができました。これはアーキテクチャ上のハードウェアの制限であり、Windowsの制限ではありません
ページテーブルは512MBを占有するので、プロセスで使用可能な総量は3.5GBでした。IntelのCPU(Core 2まで)を搭載したWindowsで3.5GBが表示されるのはそのためです。GPUを追加するとさらに少なくなります
Xeonは合計32GBのRAM、64GBのHDDを含む物理容量にアクセスすることができました(再びページファイル)。(この^はPAEをカバーしていますが、リンクを追加しました)
http://www.windowsdevcenter.com/pub/a/windows/2004/04/27/pagefile.html 3枚目のスクリーンショットソース。System V Application Binary Interface AMD64 Architecture Processor Supplement Draft Version 0.99.7 私はこの回答を改善し、ソースと関連情報を追加していきたいと思います。十分でない情報と技術的な情報のバランスを取りたいと思っています。提案を歓迎します。うまく書かれていないかもしれないからといって、ダウンコメントをしないでください 1 Robert Fischer 2017-06-19