私のDebian StretchシステムにはRAMがたくさんあります。現在はSSDで暗号化されたスワップパーティションを使用していますが、一般的な状況ではメモリ不足のため使用できないようです。
しかし、Snakedocのコメントによると、スワップを完全にオフにするのは悪い考えです。
スワップを完全に無効にすることは決して「安全」ではありません。 RAM が 96 GB 以上のシステムの場合でも、少なくとも 512 MB のスワップを実行するのが良い安全対策です。何かが異常に動作し、誤ってメモリを使い果たすと、システムに不要なプロセスを終了する時間が与えられます。スワップを無効にする代わりに、カーネルパニックが発生します。
そこで、0.5Gなどの一部のメモリを「RAMディスク」として予約し、これをスワップファイルとして使用してSSDに書き込みを保存できると考えました。
どうすればいいですか?何らかの理由でこれは悪い考えですか?
ベストアンサー1
私はその理由が安定性のためだと言いたくありません。それは一般的な誤解です。システムメモリ+スワップスペースがいっぱいになると、スワップスペースがないのとほぼ同じ症状が発生します。
- 説明できない、大きい速度が遅くなります(システムはメモリを必要とするプロセスをしばらくロックし、誰かが必要なメモリを解放する可能性があります)。
- OOM(Out of Memory)キラーによってプロセスが終了しました。
唯一の違いは、交換しないとこれらの症状が発生することです。突然、交換の場合、交換が完了した後にのみ発生します。したがって、システムが完全に応答しなくなるまで遅延時間が長くなります。
これがスワップが役に立つ最初の理由です。
2番目はあまり知られていませんが、実際にはもっと重要です。
通常、スワップを使用するとコンピュータの速度が遅くなりませんが、メモリがはるかに少なくても速度が速くなります。
理由は次のとおりです。システムのRAMは実際にプロセスで使用されていませんか?ハードドライブをキャッシュしてシステムを高速化するために使用されます。
スワップがある場合、実際にはシステムは非常に少数のメモリページをスワップアウトし、そのスペースをディスクキャッシュに使用できます。どれだけ早く発生するかは、VMの設定と経験的な方法によって異なりますが、本当に素晴らしいです(私が知る限り、Linuxはこの意味で最高です)。
ハードドライブがSSDにある場合、実際には2つのパラメータには影響しません(ただし、ナビゲーション時間が0の高速ディスクを使用すると、確かにすべての速度が速くなりますが)。
私は主に古いスワップパーティションゴールデンレートを使用しています。つまり、RAMでスワップスペースを2倍以上使用します。これはスワップ断片化を防ぐためです(スワップファイルのブロックはファイルシステムのファイルのように断片化できます)。あなたのRAMは多いが、ナビゲーション時間がゼロの高価なハードドライブがある場合、スワップ断片化は問題にならないので、少ないだけで十分かもしれません。 SSDがいくつあるのかわかりません。 RAMサイトの1倍または0.5倍で十分です。
私の考えでは、この「最小512Mスワップスペース」の提案は良くありません。使用するスワップ領域の量は、システムパラメータ(ディスクコスト、RAMの量、ディスクの数、ハードディスクの検索時間など)によって異なります。この512Mは「ゴールデンレート」ではなく「魔法の数」であり、一般的に使用すると意味がありません。