
私の Debian ストレッチ システムには大量の RAM が搭載されています。現在、SSD 上の暗号化されたスワップ パーティションを使用していますが、通常の状況ではメモリ不足によってそれが使用されることは考えられません。
しかし、Snakedoc のコメントによると、スワップを完全にオフにするのは悪い考えです。
スワップを完全に無効にすることは決して「安全」ではないことに注意してください。96 GB 以上の RAM を搭載したシステムでも、少なくとも 512 MB のスワップを実行することは、優れた安全対策です。これにより、何かが暴走して予期せずすべての RAM を消費した場合に、システムに不要なプロセスを強制終了する時間が与えられます... スワップを無効にした場合の代替策は、カーネル パニックです。
安全にスワップを永久にオフにしてスペースを取り戻すにはどうすればよいでしょうか? (Debian Jessie の場合)
そこで、RAM の一部、たとえば 0.5G を「RAM ディスク」用に予約し、それをスワップ ファイルとして使用して、SSD への書き込みを保存することを考えました。
どうすればいいですか? 何らかの理由でそれは悪い考えでしょうか?
答え1
安定性が理由だとは言いませんが、よくある誤解です。システム RAM + スワップがいっぱいになると、実際にはスワップがない場合と同じ症状が現れます。
- 説明できない、大きい速度低下 (システムが RAM を要求するプロセスをしばらくロックし、誰かがそのプロセスに必要な RAM を解放する可能性がある)
- OOM (メモリ不足) キラーによって強制終了されたプロセス。
唯一の違いは、スワップなしではこれらの症状が発生することです突然一方、スワップの場合は、スワップがいっぱいになった後にのみ発生します。したがって、システムが完全に応答しなくなるまでの遅延時間が大幅に長くなります。
これが、スワップが便利な最初の理由です。
2 番目はあまり知られていませんが、実のところはるかに重要です。
一般的に、スワップがあるとマシンの速度は低下せず、RAM が十分すぎる場合でもマシンの速度は上がります。
その理由は次のとおりです。プロセスによって実際に使用されていない RAM は、システムで何に使用されますか? RAM はハードディスクをキャッシュするために使用され、システムの速度を速めます。
スワップがある場合、基本的に、システムではほとんど使用されないメモリ ページをスワップ アウトし、そのスペースをディスク キャッシュとして使用できるようになります。どれくらい高速化されるかは、VM の設定とヒューリスティックに依存しますが、非常に高速です (私の知る限り、この点では Linux が断然優れています)。
ハード ディスクが SSD 上にある場合、これら 2 つの議論に実際に影響はありません (ただし、はるかに高速でシーク時間がゼロのディスクを使用すると、もちろんすべてが高速化されます)。
私は主に、スワップ パーティションに古い黄金律を適用しています。RAM の 2 倍のスワップを使用します。これは、スワップの断片化を回避するためです (スワップ ファイルのブロックは、ファイル システム上のファイルと同様に断片化される可能性があります)。あなたの場合、膨大な量の RAM がありますが、シーク時間がゼロの高価なハード ディスクを使用しているため、スワップの断片化は問題にならないため、おそらくこれよりも少ない量でも十分でしょう。SSD がいくつあるかはわかりませんが、RAM サイトの 1 倍または 0.5 倍でも十分でしょう。
私の意見では、この「少なくとも 512M のスワップを用意する」というアドバイスは良くありません。使用するスワップの量は、システム パラメータ (ディスク コスト、RAM 量、ディスク量、ハード ディスクのシーク時間など) によって決まります。この 512M は「黄金律」ではなく、「魔法の数字」であり、一般的に使用しても意味がありません。
答え2
SSD システムで HDD をスワップとして使用するのは得策ではありません。速度が遅いだけでなく、アクセス時間も長く、消費電力もはるかに大きく、最新の SSD よりも信頼性が低い可能性があります。最近の SSD には 5 年間の保証が付いており、毎日数百 GB を書き込んでも 8 ~ 10 年は簡単に持ちます。
しかし、もっと良いのは使用zram
SSD 上の小さなバックアップ スワップ パーティションも一緒に作成する可能性があるさまざまなLinuxディストリビューション、ChromeOS、Androidでは、何年も前からzramがデフォルトで有効になっています。Androidでは、従来のスワップさえデフォルトで有効になっていません。ウィンドウズそしてマックOS最近ではスワップに頼る前に圧縮されたRAMを使用しています
CPUはHDDよりもずっと速くデータを解凍できるため、システムがスワップを開始するとシステムの応答性がはっきりとわかります。違いはSSDに固有のものではありませんが、ベンチマーク結果はこちらデフォルトのLZOアルゴリズムのZRAMの方がまだ速いようです。簡単に変更することができます。lz4 アルゴリズムそれはLZOの約5倍の速さ圧縮比がわずかに低い
また、zswap
異なるメカニズムを使用するが、圧縮されたデータはRAMに保存される。
参考文献
答え3
@peterh の回答から判断すると、おそらく良い解決策は、古い HDD をマシンに挿入し、スワップを含むスクラッチ スペースとして使用することです。こうすることで、最後の 0.5G も含めて、すべての RAM をシステムで使用できるようになります。ラップトップの HDD は、3.5 インチ ドライブよりもエネルギー効率が高い可能性があります。