回答:
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の優れた人々はこれについて少し前に話し合いました。彼らが言わなければならなかったことをチェックしてください:
4 GBの映画を2時間かけて観る場合、多くのメモリマネージャは、そのすべてのデータをキャッシュすることは良いことだと判断します。映画の途中で、他のすべての実行中のプログラムは1時間使用されておらず、4 GBファイルをより多くキャッシュするために安全に交換できると考えられます。最終結果は、映画を見た後にプログラムの半分がスワップアウトされ、その結果、システムの動作が遅くなり、スワップファイル全体が破壊されます。
[日常的に使用したいプログラムを実行するのに十分なRAM]がある場合、スワップを使用する理由はありません。
ハイメモリシステムでのSWAPスペースの回答を参照してください。あなたの質問はより一般的ですが、いくつかのガイダンスのために。意見はこれによって大きく異なりますが、一般に1 GiB以上のRAMを搭載している人は、まったくスワップなしで実行するか、1xメモリをスワップとして実行するようです。
スワップを強制的に実行するほど多くのRAMを使用する予定がない場合でも、少なくとも1xmemoryをスワップとして使用することにはいくつかの価値があります。これにより、オペレーティングシステムは、使用が予期されていないものをスワップアウトできます。代わりに、たとえば、そのメモリをディスクまたはIOバッファに使用できるようにします。
私のVPSプロバイダーはサーバー用のスワップスペースさえ提供していません。
私が日常的に目にするほとんどのサーバーは、スワップレスです。
しかし-あなたはJVMを実行している場合、作成してくださいあなたが持っている、少なくともあなたがなりますよう多くのスワップ領域として、これまでに設定-Xmx
ための知られている 問題 JVMで。
つまり、JVMが現在使用しているよりも多くのメモリを必要とする場合(ただし、JVMはまだメモリを消費していませんXmx
)、次のようになります。
つまり、スワップがより小さい場合、Xmx
失敗する可能性があります。
バグレポートを引用するには
最善の方法は、このエラーが発生したマシンのスワップサイズを増やすことです。
JVMで作業するときは安全にプレイし、スワップを物理メモリと同じに設定します。
最近のハードディスクドライブの速度を考えると、大きなスワップはスラッシングへの誘いにすぎません。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が必要です。
最近、32GBまたは64GBサーバーを実行している場合、デフォルトの4GBのスワップは安全な量です。それより大きなものは、利用可能な物理RAMが多すぎるため、やり過ぎです。
必要なスワップの量を示す単一のアルゴリズムはありません。実際には、サポートする予定の最大の負荷をシステムにかけ、システムが実際に使用するリソースの量を調べる必要があります。それに応じてスワップファイルを設定します。
物理RAMの場合は、システムが実際に処理する予定の「巡回」負荷の下に置き、それに応じて購入する必要があります。待機時間の短いシステムでは、クルーズロード内でスワッピングを行うべきではありません(これは、スワップが割り当てられていない、または使用されていないことと同じではありません)。 、しかし一般的には、スワッピングをできるだけ少なくする必要があります。
もちろん、低価格でパフォーマンスをトレードオフできます。