エグゼクティブサマリー
スワップ領域(スワップパーティション、スワップファイル、またはページファイルと呼ばれる)は、OSによってアドレス指定可能な物理メモリを増やすための単なるメカニズムです。
使用可能な物理RAMが少なく、今日のマシンでは、4 GB以下のRAMがあればいいと思います。その後、おそらくスワップが必要です。ただし、これはワークロードとマシンの使用方法に依存します。
4GB以上のRAMがある場合、システムがスワップを使用しない可能性があります。そのため、スワップが有効かどうかにかかわらず、これはあまり変わりません。
これは他の要因に依存しますが、マシンの実行時間が長くなるほど、明らかに多くの場所が残っていても、OSがRAMの小さな未使用部分をスワップにスワップする可能性が高くなります。ただし、多くの場合、システムはファイルバッファなどに「空き」RAMを使用し、ワークロードによっては、ファイルバッファが使用可能なすべてのRAMを使用する場合があります。
背景情報
スワップを無効にしてメモリが完全に使用されるとどうなりますか?さて、次にアプリケーションが(mallocやreallocのように)より多くのメモリを要求すると、エラーを受け取ります!適切にコーディングされている場合、アプリケーションはそれを検出しますが、そのようなエラーを処理し、プログラムを正常に終了することは、まだ困難です。ただし、多くの開発者はメモリ割り当ての成功をテストせず、多くの場合、この割り当てられていないメモリが使用されるとすぐにアプリケーションがクラッシュします。そのため、アプリケーションがクラッシュする可能性が非常に高くなります。実際には、通常複数のアプリケーションが同時に実行されているため、多くのアプリケーションがクラッシュします。願わくば、カーネル自体に免疫があるはずですが、私の経験では常にそうであるとは限りませんでした。
あなたはスワップを持っている場合は、同じ動作をします、しかし、チャンスはあなたがその限界に達しないことがあるので、あなたは上限があります。
8 GBと16 GBのRAMを備えた2台のマシンがあります。これらのマシンを個人的に使用しても、このRAMをすべて使用することは決してありません(今日!おそらく数年後には異なる場合があります)。物理RAMの制限に達する唯一の理由は、プロセスが不正になり、すべてのRAMを消費していることです。スワップがないことは安心です。カーネルは、RAMの制限に達するとすぐに不正なプロセスを強制終了します。スワップがあると、システムがスワップしてスワップしてスワップし、カーネルが犯人を殺すまで完全に応答しなくなることがあるため、痛みを伴う体験が得られます(SSDではないかもしれません...)!
お勧め
スワップを削除すると、恐ろしく間違ったことが起こるかもしれないと言う人々に怖がってはいけません。これを行うと、4 GBのRAMから2 GBに移行する場合と同様に、物理アドレススペースが削減されます。あなたはそのようなことをしますか?その後、スワップを削除しないでください。ただし、制限することもできますが、それは賢明です。
自分のワークロードが使用可能な物理RAMに近いまたはそれ以上を使用する可能性があると考える場合、または大量のI / O(ディスクへの読み取り/書き込み)が必要な場合は、スワップを保持する必要があります。
スワップを保持する必要がある場合、ユーザーはプロセスが使用できるメモリの量に制限を設定する必要があります。Linuxシステムでは、cgroupのメモリ制限を使用して、一部のプロセスが制御不能になることを回避できます。OSXでの同等の機能はわかりませんが、それが方法であるはずです。
ただし、ワークロードに使用可能なメモリが十分にある場合は、スワップを安全に無効にするか、保持することができます。システムがスワップを使用しない場合、パフォーマンスの低下の影響を受けないため、パフォーマンスの面でもあまり変化しません(特に古い回転ハードディスクで顕著で、SSDで顕著ではありません)。
上記と同じトリックを使用して、プロセスまたはプロセスのグループごとにメモリ制限を設定しようとすると、使用可能なRAMが十分にある場合にもメリットがあります。
私自身の例
私は古いPCに1 GBのRAMがあり、そこに大きなスワップがあります:4 GBなので、Firefoxや他のアプリケーションを実行できます。ただし、正しいユーザーエクスペリエンスを提供するために、できるだけ小さなアプリケーション(またはFirefoxのタブ)を使用する傾向があります。
8 GB RAMの小さなサーバーがあります。そこで作業負荷を正確に把握しており、プロセスが不正になり、すべてのメモリを消費しているため、サーバーの速度を低下させたくありません。そこでは、スワップやcgroupのメモリ制限を強制するバリアがないため、アプリケーションやサービスはクラッシュする可能性がありますが、カーネルはクラッシュしません。ところで、これはLinuxマシンです。
次に、16 GB RAMを搭載したMacを使用します。私はそれの唯一のユーザーではありません。ユーザーを切り替える際に待つことを気にしません。そこにはスワップがありますが、このコンピューターの他のユーザーの作業負荷を計画するのは困難です。私だけがスワップを使用する場合でも。私は頻繁に複数のVMを実行し、メモリを消費するアプリケーションを使用しますが、同時にすべてを使用するわけではないため、未使用のアプリでOSを交換することを気にしないため、ディスクI / Oを高速にしたり、別のVMを起動したりできます。今までのところ、このマシンの交換は見ていません!