2-4GBシステムのスワップ領域はどれくらいですか?


53

2〜4 GBのRAMを搭載した新しいLinuxマシン(Debian)でスワップを作成するサイズをどのように決定すればよいですか?本当にスワップスペースが必要ですか?


3
5年後、2〜4 GBはもはや高メモリではありません。
fifiファイナンス14

@KasperSourenいいえ、そうではありません。当時はかなりの量でした。
C.ロス

回答:


54

マシンでどれだけのスワップが使用されているかを知る方法はたくさんあります。一般的な提案では、2 x RAM、1.5 x RAM、1 x RAM、.75 x RAM、.5 x RAMなど、RAMに基づいた式を使用します。多くの場合、式はRAMの量によって異なります(したがって、1GBのRAMを搭載したボックスでは2 x RAMスワップ(2GB)を使用し、16GBのRAMを搭載したボックスでは0.5x RAMスワップ(8GB)を使用します)

考慮すべきもう1つのことは、ボックスの用途です。多数の同時実行プロセスをボックスで実行するが、それらのかなりの数が一定期間アイドル状態になる場合、余分なスワップを追加することは理にかなっています。少数の重要なプロセスを実行する場合、追加のスワップを追加することは理にかなっています(これは直感に反するように思えるかもしれませんが、すぐに説明します)。ボックスをデスクトップとして実行している場合、追加のスワップを追加することは理にかなっています。

スワップを含めるべきかどうかについては、そうです。自分何をしているのかを本当に理解していない限り、常にスワップスペースを含める必要があり、それには十分な理由があります。

Linuxカーネルの動作方法を見てください。スワップは、すべての物理メモリを使い果たした場合にのみ使用されるわけではありません。Linuxカーネルは、アクティブではない(スリープ状態の)アプリケーションを使用し、しばらくすると、アプリケーションを実メモリからスワップに移動します。その結果、そのアプリケーションが必要な場合、アプリケーションのメモリがスワップからRAMに読み戻される間、瞬間的な遅延(通常は1〜2秒)が発生します。そして、これは通常良いことです。

これにより、非アクティブなアプリケーションを「スリープ」状態にして、アクティブなアプリケーションが追加のRAMにアクセスできるようにします。さらに、Linuxはマシン上の使用可能な(未割り当ての)RAMをディスクキャッシュとして使用するため、ほとんどの(低速の)ディスクアクティビティがより高速で応答性が向上します。非アクティブなプロセスをスワップアウトすると、ディスクキャッシュが増え、マシン全体が高速になります。

最後に、ディスクスペースは安価です。本当に安い。スワップ用の(比較的)小さな領域をスワイプしない理由はまったくありません。マシンで2GBから4GBのRAMを使用して実行している場合、おそらくスワップ領域を少なくともRAMと等しくなるように設定していました。RAMが2GB未満の場合、少なくとも2GBのスワップを使用します。

更新:優れたコメントが述べたように(そして忘れました)、「休止状態」モード(ディスクへのサスペンド)にしたいラップトップまたはデスクトップを実行している場合、少なくとも常にメモリがあるときにスワップします。スワップスペースは、コンピューターが「スリープ」している間にRAMの内容を保存するために使用されます。


22
すばらしい答えですが、あなたはただ一つのことを忘れました。デスクトップまたはラップトップの場合、コンピューターの休止状態にできるように、スワップが少なくともRAMのサイズと同じであることを確認してください。これにより、RAMがスワップされます。
サンダーマレシャル

4
素晴らしい投稿。サンダーは私がそれに追加しようとしていた唯一のものに私を打ちました。追加項目が1つありますが、複数のドライブがある場合、アクティブなファイルシステムの残りのないドライブにスワップを配置すると、競合が少なくなるため、パフォーマンスが向上します。
GreenKiwi 2009年

私のように見つけたこの過去の夏は、Java実行している場合、あなたはかなりのスワップ領域を持っている必要があります
ウォーレン

ユーザーが100%の稼働時間のデスクトップコンピューター(休止状態なし)で実際に使用する量(16GB / 32GB)よりもはるかに大きいRAM容量を持っている場合、SWAPに配置するプロセスを要求することを引き続き提案しますか?容量に近づかない限り、RAMにすべてを残す利点があるように思えます。
earthmeLon

1
@earthmeLon-まだ少しのスワップがあることをお勧めします。最近のディスクは大きくて安価なため、スワップするための数GBのディスクスペースの損失は無視できます。スワップスペースを確保すると、予想よりも多くのRAMが消費される場合に備えて保険が適用されます。
クリストファーキャシェル

17

Red Hat 、大量のRAMを搭載したサーバーには次の式を推奨しています。

if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB

システムに1 GBのRAMがある場合、スワップは2 GBになり、16 GBの場合は18 GBになります。


3
RHEL6ストレージガイドからの関連リンク:docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/…–
オフィディアン

サーバーが常に1Gbのスワップを使用すると、RAMがいっぱいになるため、サーバーはかなり停止します。
user2284570

12

遅い答え、これは選択された答えでほぼカバーされたと思いますが、ここで @ssapkotaが提供する答えにはいくつかの良い簡単に消化できる情報があります(コピー/貼り付け)。

RedHatからの非常に優れた推奨事項を次に示します。推奨されるシステムスワップスペース

同じリンクからの抜粋:

過去数年で、推奨されるスワップスペースの量は、システムのRAMの量に比例して増加しました。しかし、現在のシステムのメモリ量は数百ギガバイトに増加しているため、システムに必要なスワップスペースの量は、そのシステムで実行されているメモリワークロードの関数であることが認識されています。ただし、スワップスペースは通常インストール時に指定され、システムのメモリワークロードを事前に決定することが困難な場合があるため、次の表を使用してシステムスワップを決定することをお勧めします。

現在の表(2012年12月現在):

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
64GB of RAM or more           4GB of swap space              No extra space needed

元のテーブル:

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 

8

それはあなたがそれで何をしているのかにかなり依存します。適切なワークロードがあれば、16MBのRAMでも16384MBのRAMでも、実際にはスワップスペースは必要ありません。実際、ほとんどの組み込みLinuxデバイスは何もなしで実行されます(何にスワップしますか?)

RAMの価格を考慮すると、おそらくアクティブな計算にスワップを使用することはないでしょう。それで、何が残っていますか?

  1. デスクトップでは、ディスクへのサスペンドにスワップスペースが使用されます。このスワップ領域は、メモリの内容がどれだけ圧縮されるかに応じて、約1×RAMである必要があります。
  2. 非アクティブなタスクをRAMから削除して、ディスクキャッシュのスペースを増やすことができます。
  3. 同じですが、アクティブなプロセスがヒープ/スタックの代わりにそれを使用できるようにします

(2)および(3)ワークロードに大きく依存しています。デスクトップでは、(2)で4GB +を簡単に使用でき、他のデスクトップでvims、xtermsなどを実行したままにできます。

私が実行しているほとんどのサーバーでは、スワップアウトされるものはほとんどなく、1〜2GBのスワップ(RAMの量に関係なく)は問題ないようです。


スワップスペースは、JVMを利用するものを実行する場合にも使用されます。Java を実行しいる場合は、スワップスペースの割り当てを忘れないでください。
ウォーレン

@warren:Tomcatインスタンスがあり、それぞれ3GiBを超えていますが、スワップは使用していません(1つはhugepagesを使用しているため、スワップできません)。何を言っているのかわかりません。
derobert

過去の夏に遭遇した最小および最大メモリ設定に関連するJVMの半曖昧なバグがあります(antipaucity.com/?p=984)。TL; DR - JVMはOSからより多くのメモリを要求するたびに、それはそのメモリが連続しているように、当時RAMに自身を読み込み、その新しいメモリチャンクを取得し、スワップに自分自身を書き出す
ウォーレン

@warren:OK、64ビットでOpenJDKを実行しています。XmxとXmsは同じです。しかし、javaがそれ自体を強制的にスワップさせる方法はわかりません。唯一のsyscallのクローズはになりますがmadvise、失敗することはありません...そのバグはガベージコレクション中のメモリ不足について語っています。スワップを追加すると、もちろんそれを防ぎますが、RAMも追加します。PAEを使用した32ビットのせいでしょうか?
デロバート

それはあまりにも、64ビットのJVMで発生:あなたが持っている場合XmsXmx同じ値に設定されていない、それはひどくあなたをかむことができます:2 +週間のための私達のための主要な問題を引き起こし、我々は最終的にそれを突き止めゴマ
ウォーレン

4

まあ、それはあなたが実行する予定のサービスとアプリケーションに依存します。free -mを使用してメモリ使用量を監視し、それに応じてスワップパーティションを調整できます。

このテーマに関する興味深い議論があります。個人的に(そしてその議論を読んだ後)、私はまだスワップのために約1 GBを残します。


2

私はDebianに直接話をすることはできませんが、2 GBを超えるRAMを使用すると、元の2xRAMの式が変わり、通常は1xRAMになります。16 GB RAMに達すると、提案は再び.75xRAMに低下すると思います。

もちろん、これはSolarisにも当てはまり、実際にはOracleのインストールに使用されるメトリックなので、YMMVはそこで実行するアプリによって異なります。


2

私は常に(少なくとも)RAMと同じ量のスワップを行います。いつかマシンを休止状態にしたい場合に備えて。少ないもので動作しますが、同様に動作しません。

HDDスペースは最近安いので、スワップスペースを提供することをheしません。


2

スワップ領域は、すぐにメモリ不足になる場合に「パディング」として機能します。

プロセスが利用可能なRAMをすべて消費し、一部のマシンが非常に遅く実行される場合、通常は回復できます。また、問題の原因となっているプロセスを簡単に確認できます。


2
これは両刃の剣です。自宅のPCで、Firefox 2.xを使用しているときにスワップを削除しました。これは、すべてのメモリを徐々に消費し、マシンがスワップしたときに完全に使用できなくなったためです。スワップなしでは、Firefoxプロセスは単にカーネルによって閉じられました:)
wazoox 09

1

長年にわたって、WindowsマシンではRAMと同じくらいのスワップを使用するというルールを守ってきました... Novellでは、プリンターがもっとあればスワップをより高く調整します... Linuxの場合、ルールとプラクティスは1GBでした持っている2GB RAMごとにスワップします。そして、ディスクの前面に配置して、より速くアクセスできるようにします。

  • メール/スパムゲートウェイの場合、RAMへの2倍のスワップを使用します
  • *サーバーの場合、スワップはまったく使用しません
  • LAMPサーバーの場合、1/2ルールが有効です。

  • マイレージは、アプリケーションとGUIの使用状況によって異なります。


実際、ディスクの中央のスワップが最も高速にアクセスされると思います。
エディ

0

1GBのスワップを作成し、使用する2番目のRAMを追加購入します。最新のコンピューターではスワップは本当に必要ありません。RAMはとても安いです。


0

何のためにシステムを使用していますか?個人的に私はスワップを使用しません。何かが512MBのトークンまたは何かを使用している場合は、常駐しているが長期間非アクティブになっている場合にディスクに置くことができます。


0

ゼロスワップでシステムを構成するには特別な構成が必要なため、小さなトークンスワップ(通常は256 MB、でも64 MBを実行しました)を使用します。

ディスク容量は安いですが、遅いです。システムがスワッピングを開始するとすぐに、パフォーマンスはゼロになります。また、RAMはそれほど高価ではありません。

私を信じて、少し遅いプロセッサを購入し、RAMを追加購入してください。3.0 GHzの代わりに2.8 GHzを使用すると、少なくとも2 GBのRAMを購入するのに十分なお金を節約できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.