web-dev-qa-db-ja.com

RAM SSD上のスワップパーティションまたはスワップファイルの代替

私のDebianストレッチシステムには大量のRAMがあります。現在、SSDで暗号化されたスワップパーティションを使用していますが、通常の条件下では、メモリ不足が原因で使用されるとは思っていません。

しかし、Snakedocのコメントによると、スワップを完全にオフにすることは悪い考えです。

ただし、スワップを完全に無効にすることは決して「安全」ではありません。 96 GB以上のRAMを搭載したシステムでも、少なくとも512 MBのスワップを実行することは、安全対策として優れています。何かがおかしくなり、すべてのRAMを予期せず使い果たした場合、システムに不要なプロセスを強制終了する時間を与えます...スワップを無効にした代替手段は、カーネルパニックです。

スワップを安全に永久にオフにしてスペースを取り戻す方法は?(Debian Jessieの場合)

そのため、RAMの一部を予約し、「RAMディスク」として0.5Gを確保し、それをスワップファイルとして使用して、SSDへの書き込みを保存することを考えました。

それ、どうやったら出来るの?どういうわけか悪い考えですか?

6
user87218721

SSDシステムのスワップにHDDを使用することは悪い考えです。速度が遅いだけでなく、アクセス時間がはるかに長く、消費電力がはるかに大きく、最新のSSDよりも信頼性が低い可能性があります。現在、SSDには5年間の保証があり、毎日数百GBを書き込んでも、8〜10年は簡単に持続できます。

しかし、zram を使用する方がはるかに優れています。SSDの小さなバックアップスワップパーティションを使用することもできます。さまざまなLinuxディストリビューションとChromeOSおよびAndroidで、デフォルトで長年zramが有効になっています。Androidでは、従来のスワップもデフォルトではありません。 Windows および- macOS 今日はスワップを使用する前に圧縮されたRAM=を使用しています

CPUはHDDよりもはるかに高速にデータを解凍できるため、システムがスワップを開始すると、システムの応答性を明確に感じることができます。違いはSSDに固有のものではありませんが、 ここでのベンチマーク結果 zramによると、デフォルトのlzoアルゴリズムを使用したzramは、まだ高速に見えます。あなたは簡単に lz4アルゴリズム に変更できます---これは lzoのほぼ5倍速い わずかに低い圧縮率で

zswap もあり、異なるメカニズムを使用しますが、圧縮されたデータをRAMに保存します

参考文献

2
phuclv

その理由は安定性とは言えませんが、それはよくある誤解です。システムRAM +スワップがいっぱいの場合、実際にはスワップなしと同じ症状が見られます。

  1. 原因不明bigスローダウン(システムはramを要求するプロセスをしばらくロックします、おそらく誰かが必要なramを解放します)
  2. OOM(メモリ不足)キラーによって強制終了されたプロセス。

スワップなしではこれらの症状が発生する唯一の違い突然が、スワップ付きでは、スワップが入力された後にのみ発生します。したがって、システムが完全に応答しなくなるまでの遅延時間ははるかに大きくなります。

これが最初の理由です。なぜスワップがあると便利なのでしょうか。


2番目はあまり知られていませんが、実際にははるかに重要です。

一般的に、RAMが十分にない場合でも、スワップしてもマシンの速度は低下せず、加速されます。

その理由は次のとおりです:RAMを使用しているシステムは実際にはプロセスで使用されていませんか?)これらはハードディスクをキャッシュするために使用され、システムを高速化します。

スワップがある場合、基本的に、システムが本当にまれなメモリページをスワップアウトし、そのスペースをディスクキャッシュに使用することを許可します。それらが発生する速さは、VM設定とヒューリスティックですが、それらは本当に良いです(私が知る限り、この意味でLinuxは最高です)。


ハードディスクがSSD上にある場合、これらの両方の引数に実際には影響しません(もちろん、はるかに高速でゼロのシーク時間のディスクを使用すると、すべてが加速されます)。

私は主にスワップパーティションに古いゴールデンルールを使用しています。RAMとして2倍以上のスワップを使用しています。これは、スワップの断片化を回避するためです(スワップファイルのブロックは、ファイルシステムのファイルと同じように断片化できます)。大量のRAMがあり、シーク時間がゼロの高価なハードディスクがある場合、スワップの断片化は問題ではないため、それよりも少ない場合でも十分でしょう。 SSDはいくつあるかわかりませんが、RAMサイトの1倍または0.5倍で十分でしょう。


私の意見では、この「少なくとも512Mのスワップが必要です」というアドバイスは良くありません。使用するスワップの量は、システムパラメータ(ディスクコスト、RAM量、ディスクの量、ハードディスク)に依存する必要がありますこの512Mは「ゴールデンルール」ではなく、「マジックナンバー」であり、一般的に使用しても意味がありません。