数年前から、RAMの2倍のスペースを持つスワップパーティションを作成することをお勧めします。それは今日も当てはまりますか?またはこれはもう必要ありませんか?
8 GiBのRAMのサーバーがあり、スワップパーティションを作成する必要があります。16GiBが多すぎるのではないかと思っていました。
8GBの物理RAMの大規模システムでは、通常2GBのスワップを割り当てます。これらは、OracleまたはPostgreSQLを実行するロードされたデータベースサーバーです。何年もの間、私は重い負荷の下でさえスワップのヒットを見たことはありません。負荷が高いのは、約100〜150人のユーザーが約10,000のSQL読み取りを実行し、1分あたり2,500の書き込みを実行する場合です。
また、スワッピングレベルを調整してスワッピングを阻止し、実行する必要がないことがわかっている不要なプロセスをオフにします。 (カスタムLinuxビルド)
上記のEddieのように、1x物理RAMは、4GB未満の場合は良い目安です。私はFortune-500の大企業向けにカスタムLinuxビルドを行っており、これらは私たちが通常行うことです、そして私は過去5年ほどの間、私が彼らのためにコンサルティングしてきた問題はありませんでした。
大規模なシステム:32 GBと64 GBのRAMを搭載した64ビットLinux、これらはOracleデータベースサーバーであり、通常、上記のEddieが指摘するようなもののために2 GBのスワップを維持します-アイドルプロセスは、スワップ設定に応じてスワップに移動されます。
一見時代を超えた質問。善良な人々 SlashDotで はこれについて少し前に議論しました。彼らが言わなければならなかったことをチェックしてください:
2時間かけて4 GBの映画を見ると、多くのメモリマネージャーは、そのすべてのデータをキャッシュするのは良いことだと判断します。映画の途中で、他のすべての実行中のプログラムは1時間使用されておらず、その4 GBファイルをより多くキャッシュするために安全に交換できると考えられます。最終結果は、映画を見た後にプログラムの半分がスワップアウトされ、その結果、システムの動作が遅くなり、スワップファイル全体が破壊されます。
[RAM使用したいプログラムを日常的に実行するのに十分)]がある場合、スワップを使用する理由はありません。
私のVPSプロバイダーはサーバーにスワップスペースも提供していません。私の場合、それがなくても問題なく稼働しています。
私が日常的に目にするほとんどのサーバーは、スワップレスでもあります。
ただし、JVMを実行している場合は、sure少なくとも )できるだけ多くのスワップ領域everset -Xmx
既知問題 がJVMにあるため。
つまり、JVMが現在使用しているよりも多くのメモリを必要とする場合(ただし、Xmx
にはまだ到達していません)、次のようになります。
つまり、スワップがXmx
より少ない場合、失敗する可能性があります。
バグレポートを引用するには
最善の方法は、このエラーが発生したマシンのスワップサイズを増やすことです。
JVMを操作するときは安全にプレイし、スワップを物理メモリと同じに設定します。
いくつかのガイダンスについては、回答 ハイメモリシステムでのSWAPスペースの量? を参照してください。意見はこれによって大きく異なりますが、一般的に1 GiB of RAM=以上の人は、スワップなしで実行するか、スワップとして1xmemoryを使用するようです。
RAMを使用してスワップを強制的に実行する予定がない場合でも、少なくとも1xmemoryをスワップとして使用することにはいくつかの価値があります。オペレーティングシステムが一部をスワップアウトできるようにします。ディスクやIOバッファなどの代わりにそのメモリを使用できるように、すぐに使用することが予期されていないもの。
システムが休止状態になり、正常に再開できると予想される場合:-)、物理RAMの容量よりも多くの領域をスワップパーティションに割り当てることをお勧めします。
最近、32GBまたは64GBサーバーを実行している場合、デフォルトの4GBのスワップは安全な量です。それよりも大きいものは、物理的なRAMが利用可能であるため、やりすぎです。
最近のハードディスクドライブの速度を考えると、大きなスワップはスラッシングへの誘いにすぎません。 SSDはこの傾向を逆転させるかもしれませんが、ディスクの最大転送速度が300MB/sであるため、2〜4GBでのスワップにはしばらく時間がかかります。
昔(つまり、Linux 1.2、i386、SunOS 4.x)では、おそらく5〜15 MBのデーモンプロセスが実行されており、4〜32 MBのRAMなどのいずれかの場所にあります。 I/Oの待機中にブロックされただけのデーモンは、実際のパフォーマンスに影響を与えることなくスワップアウトできます...そして、ユーザープログラムには2〜3 MBのRAMスワップは非常に理にかなっています。
現在、私の環境では、ほとんどのサーバーに単一メモリの重いワークロードがあり、RAMはかなり正確に見積もることができます...緊急事態、暴走プロセスなどのためにスワップがあります。
例外は、スリープ状態になる可能性のあるラップトップおよびワークステーション用です。多くのOSは、スワップ領域を使用してサスペンドイメージを保存します。その場合、スワップは物理メモリより大きくなければなりません。 suspend2/tuxoniceを使用するLinuxでは、suspend-to-diskをサポートするために、スワップサイズに2xRAMが必要です。
理想的には、スワップをまったく使用しないでしょう。2xRAM事は、何年も前から残っているものです。
あなたがそれについて心配しているなら、私は次のようなことをします:
Max Memory Requirement - Physical Ram = Swap
16GBは個人的には大きすぎると思います。
昔は、できるだけ多くのものが欲しかったのですが、最新の* nixカーネルでのメモリ消費は過去のものです。古い格言は「あなたの記憶の2倍」でした。 2GBまたはマシンがRAMに搭載しているスペースの量は、この日と年齢で、必要な場所に近くなります。
スワップは、カーネルパニック後にダンプを保存するためにも使用されます。これらのダンプを分析して興味があり、別のダンプ先を指定していない場合、スワップは少なくともRAMと同じ大きさにする必要があります。
必要なスワップの量を示す単一のアルゴリズムはありません。実際には、サポートする予定の最大の負荷をシステムにかけ、実際に使用するリソースの量を調べる必要があります。それに応じてスワップファイルを設定します。
物理RAMの場合は、システムで実際に処理する予定の「巡航」負荷をかけ、それに応じて購入する必要があります。レイテンシが低いシステムでは、クルーズロード内でスワッピングを行うべきではありません(これは、スワップが割り当てられていない、または使用されていないことと同じではありません)。 、しかし一般的には、可能な限りスワッピングを少なくする必要があります。
もちろん、パフォーマンスを犠牲にして価格を下げることもできます。