1GiB(そしておそらくそれ以下)のスワップでも問題ありません。私の職場のコンピューターは、通常140〜150 MiBしか使用しません。ギガバイトはそのための過剰なプロビジョニングです。
数百ギガバイトのデータセットを必要とするタスクを計算し、(これは重要です!)データに多かれ少なかれ一度アクセスする方法でアクセスしない限り、それよりもはるかに大きなスワップは決して望まないでしょう。ただし、この場合も、データファイルのメモリマッピングだけで同じように機能します。
しかし、より多くのスワップはより多くの助けになりますよね?何よりも常に優れている!
たとえば、16GiBのスワップがどのような違いを生むか(または64GiBを考えるか)を検討してください。これらの16GiBを一度も使用しない場合、そもそもそれらを脇に置くことはできません。しかし、それらを使用した場合、どうなりますか?ディスクは、メインメモリと比較して非常に遅いです。SATA-600 SSDを使用しても、16GiBの転送には30〜40秒かかり、他の構成では2〜4倍の時間がかかります。
誰かが、16GiBではなく、1ダースほどの4kiBページをページインおよびページアウトしていることに必然的に反対します。それは事実ですが、ポイントはそれでも成り立ちます。数ページだけスワップインおよびスワップアウトする必要がある場合は、16GiBのスワップは必要ありませんが、16GiBのスワップが必要な場合は、それらも転送します(何らかの方法で)。
理論的には、すべてのユーザーの99.9%がスワップなしで64GiBマシン(または8 + GiBマシン)を使用することさえでき、ほとんどの場合、何かが欠けていることに気付くことはありません。ただし、これはお勧めできません。
まず、オペレーティングシステムが物理メモリを使い果たしたときに破棄できるものの選択肢が少ないため、最適ではありません。できることは2つあります。使用されていないものをスワップアウトするか、バッファキャッシュからページを破棄します。スワップがない場合、できることは1つだけです。バッファキャッシュからページを破棄することは無害ですが、パフォーマンスに著しく影響する場合があります。
第二に、スワップがない場合、プライベート匿名マッピングは単に失敗する可能性があります。ことは、通常は発生しませんが、最終的にすべてのそれらを満たすために利用できる十分な物理メモリがないとき、そして何のスワップはありません、オペレーティングシステムは除いて...、いずれか一方のみこの選択肢を持っている
第三に、恐ろしいOOMキラーはで蹴ること。これは、ほぼランダムなプロセスが強制終了されることを意味します。いいえ、結構です。これはあなたが起こしたいものではありません。
そうは言っても、インストールされたRAMのX倍のスワップが必要だというアドバイスは、聞いたことを繰り返した(理解できなかった!)何十年も聞いた(そして理解しなかった!)前。
「RAMの2Xを使用」ルールは、1980年代および1990年代に覚えやすい経験則であり、「黄金の真実」(ほとんどのユーザーにとって問題なく機能するもの)であったことはなく、今日ではまったく適用されません。
OSが古いものをページアウトできるように、簡単に余裕のある合理的な量のスワップ(たとえば、ギガバイト)を用意する必要があります。そうすれば、もう少しメモリを要求しても世界はすぐに終了しません。しかし、それだけです。
mmap
して作業セットページを割り当てることを検討してください。スワップの量は、プロセスに必要な量になります。