回答:
マシンでどれだけのスワップが使用されているかを知る方法はたくさんあります。一般的な提案では、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の内容を保存するために使用されます。
Red Hat は、大量のRAMを搭載したサーバーには次の式を推奨しています。
if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB
システムに1 GBのRAMがある場合、スワップは2 GBになり、16 GBの場合は18 GBになります。
遅い答え、これは選択された答えでほぼカバーされたと思いますが、ここで @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
それはあなたがそれで何をしているのかにかなり依存します。適切なワークロードがあれば、16MBのRAMでも16384MBのRAMでも、実際にはスワップスペースは必要ありません。実際、ほとんどの組み込みLinuxデバイスは何もなしで実行されます(何にスワップしますか?)
RAMの価格を考慮すると、おそらくアクティブな計算にスワップを使用することはないでしょう。それで、何が残っていますか?
(2)および(3)ワークロードに大きく依存しています。デスクトップでは、(2)で4GB +を簡単に使用でき、他のデスクトップでvims、xtermsなどを実行したままにできます。
私が実行しているほとんどのサーバーでは、スワップアウトされるものはほとんどなく、1〜2GBのスワップ(RAMの量に関係なく)は問題ないようです。
madvise
、失敗することはありません...そのバグはガベージコレクション中のメモリ不足について語っています。スワップを追加すると、もちろんそれを防ぎますが、RAMも追加します。PAEを使用した32ビットのせいでしょうか?
Xms
とXmx
同じ値に設定されていない、それはひどくあなたをかむことができます:2 +週間のための私達のための主要な問題を引き起こし、我々は最終的にそれを突き止めゴマ
まあ、それはあなたが実行する予定のサービスとアプリケーションに依存します。free -mを使用してメモリ使用量を監視し、それに応じてスワップパーティションを調整できます。
このテーマに関する興味深い議論があります。個人的に(そしてその議論を読んだ後)、私はまだスワップのために約1 GBを残します。
長年にわたって、WindowsマシンではRAMと同じくらいのスワップを使用するというルールを守ってきました... Novellでは、プリンターがもっとあればスワップをより高く調整します... Linuxの場合、ルールとプラクティスは1GBでした持っている2GB RAMごとにスワップします。そして、ディスクの前面に配置して、より速くアクセスできるようにします。
LAMPサーバーの場合、1/2ルールが有効です。
マイレージは、アプリケーションとGUIの使用状況によって異なります。
ゼロスワップでシステムを構成するには特別な構成が必要なため、小さなトークンスワップ(通常は256 MB、でも64 MBを実行しました)を使用します。
ディスク容量は安いですが、遅いです。システムがスワッピングを開始するとすぐに、パフォーマンスはゼロになります。また、RAMはそれほど高価ではありません。
私を信じて、少し遅いプロセッサを購入し、RAMを追加購入してください。3.0 GHzの代わりに2.8 GHzを使用すると、少なくとも2 GBのRAMを購入するのに十分なお金を節約できます。