RAM(8GB)がたくさんあるので、外出中にスワップが使用され、RAMが多すぎるとスワップが悪いと聞いたので、私は不思議に思っていました。
スワップパーティションを作成しないとどうなりますか?
また、冬眠に必要ですか、それは必須ではありませんか?
RAM(8GB)がたくさんあるので、外出中にスワップが使用され、RAMが多すぎるとスワップが悪いと聞いたので、私は不思議に思っていました。
スワップパーティションを作成しないとどうなりますか?
また、冬眠に必要ですか、それは必須ではありませんか?
回答:
最新のオペレーティングシステムでは、RAMを効率的に使用するためにスワップスペースが必要です。システムに十分なRAMがある場合でも、RAMを浪費するとバッファキャッシュが小さくなり、ディスクI / Oが増加します。したがって、RAMの容量に関係なく、システムでそれを効率的に使用する必要があります。これを効率的に使用するということは、アクセスされる可能性が極めて低いものをRAMから取り出すことを意味します。
一般的なシステムを起動すると、多数のサービスが起動します。プログラムは初期化コードを実行し、プロセス内のプライベートメモリマッピングを変更します。これらのサービスの多くは二度と実行されません。それらの多くは何時間も実行されません。スワップがなければ、OSは、これらのサービスに関連付けられた変更されたプライベートメモリマッピングをRAMに永久に保持する以外に選択肢がありません。それはディスクキャッシュとして決して使用できないRAMです。
そのため、必要かどうかに関係なくスワップが必要です。
ここ数年、スワップなしでデスクトップシステムを実行してきましたが、順調に進んでいます!異なる動作がいくつかあります。これらのいくつかは有利であり、いくつかはあなたを傷つけるかもしれません。それはすべてあなたが何をしているかに依存します。
1つの大きな違いは、メモリがなくなったときのシステムの動作です。
スワップパーティションがない場合、OOMキラーはすぐに実行されます。プログラムがメモリをリークしている場合、それが殺される可能性が高いです。それが起こり、ほぼ瞬時にシステムを回復します。
スワップパーティションがある場合、カーネルはメモリの内容をスワップにプッシュします。エラープロセスは、メモリの割り当てを続行できます。これは、スワップがなくなるまで続きます。スワップパーティションが大きい場合は、10分から1時間になることがあります。これを実行している間、システムの速度は低下します。ターミナルを開いてプロセスを強制終了することは不可能になります。私は通常、これが発生したときに電源コードを抜きます。
私は私のデータを失うつもりですので、だから、とにかくときにシステムOOMs、私は、少なくとも回復の(高い)チャンスがあるに旧オプションを好みます。
スワップ領域があるとパフォーマンスに悪影響を与えると考えるのはよくある誤解です。パフォーマンスに深刻な影響を与えるのは、十分なRAMがないことです。スワップ領域自体は、信頼性を気にしない限り、パフォーマンスに悪影響を及ぼしません。十分なRAMがあると思われる場合でも、パフォーマンスにプラスの影響を与える可能性があります(RAMの不足は報告されません)。
考慮すべき基本的なケースは3つあります。
1:内部カーネルのニーズに十分なRAMがあり、すべてのアプリケーションがRAM上にページのワーキングセットを保持し、バッファーキャッシュがファイルシステムのホットデータのほとんどを格納するための「空き」RAMを保持します。
2:上記と同じですが、バッファキャッシュを完全に効率化するための十分な空きRAMがありません。
3:アプリケーションが使用するページを保存するのにも十分なRAMがありません。
プロダクションマシンの標準であるケース1では、スワップ領域があるかどうかは何も変更しません(少なくともLinuxベースのOSおよびメモリをオーバーコミットする他のOS)。
ケース2では、スワップ領域があると、システムが非常に頻繁に使用されないページをページアウトできるようになり、バッファキャッシュがその役割をより適切に果たすことができるため、全体的なパフォーマンスが向上する場合があります。
ケース3では、スワップ領域があると、ページネーションによるパフォーマンスの低下を犠牲にして、アプリケーションを実行し続けることができます。一方、スワップ領域(または十分な大きさ)がないと、アプリケーションがランダムにクラッシュします。さらに、OSの設定によっては、OOMキラーは、RAMの需要が高い場合に(ユーザーの)重要なデータを保存する機会を与えずに、最もメモリを消費するアプリケーションを強制終了することもあります。
後者の場合は、選択する必要があるケースです。応答時間が非常に重要であり、トランザクション/プロセスを失うことが大した問題ではないシステムのように、プロセスを強制終了することが好ましいオプションであるユースケースが確かにいくつかあります。
ただし、ほとんどの状況では、ユーザー/管理者がRAMの不足に気づき、データを失うリスクなしにそれに応じて行動できるようにする方がよいと考えがちです。
スワップパーティションを使用したくない場合は、スワップファイルを使用できます。通常のファイルに保存され、スワップスペースとして使用されるファイルシステムイメージです。
次の記事では、その方法を詳細に説明しています。
少し危険ですが、スワップスペースなしで実行できます。しかし、最終的にメモリ量を超えた場合、システムはほぼ即座に予告なしにクラッシュします。
スワップは基本的に拡張されますが、メモリの速度ははるかに遅くなります。超えた場合、スワッピングが開始され、システムの寿命が実際に失われます。しかし、誤ったプロセスを停止することで、システムを保存できます。
一部のプログラムは、スワップスペースの割り当てを要求します(使用しません)。これらの一部は、思い出すとデータベースプログラムです。繰り返しますが、スワップ領域を持たないことにより、実行できるプログラムを制限する場合があります。
最後に、エリアをバックアップする必要がないという点で、SWAPは安価です。(私はあなたが彼らのシステムをバックアップするこれらの素晴らしい傑出したシステム管理者の一人であることを望んでいます)。
それを作成します。
私の経験則は、以前は2 * memory-size .....でしたが、今では多くの場合1 * memory-sizeで大丈夫ですが、一般的には1.5 *(memory-size)を使用しています。これほどの量を作成する必要はありませんが、私は...特に、あなたが行っている制作タイプの仕事がある場合はそうします。
ああ、そして冬眠には、メモリの全体像を保持するためにスワップが必要です。したがって、h8ibernationを検討している場合、サイズはAT LEAST(1 * memory-size)+ 100MBである必要があります。100MBは、プロセスで必要となる可能性のあるオーバーヘッド用です。
Linuxスワップは、メモリのプレッシャーが発生するとすぐに非常に厳しい要件を持つようです。症状は、ほとんどすべてのRAMがアクティブなプロセスで使用されている場合、システムがハードにストールし、ハードディスクが暴走することです。
どうして?
バッキングファイルのないページ(通常は動的メモリ割り当てによる)は、スワップがない場合はRAMから削除できません。カーネルは、バッキングファイルが実際に再び必要になった場合でも、バッキングファイルのあるページに頼ります。e。スワップなしでもゴミ箱に入れます!
この微妙な問題の詳細については、このブログ投稿を参照してください。
結論:常にスワップします。
また、大まかなガイドラインとしてのサイズについては、休止状態になっていないと仮定して、RAMの多いシステムでも4〜8 GBを使用します。詳細については、スワップ領域に関するRed Hatのドキュメントを参照してください。