これは悪い考えです。これが便利な場合、Linuxカーネルはこの方法で実装します。このような単純なシェルスクリプトは、おそらくカーネル開発者のアルゴリズムほど賢くないため、いくつかのチューニングパラメーターを変更する理由はないと思います。
基本的に2つのケースがあります。
- とにかく、スワップ領域のプロセスは使用されません。なぜそれらをRAMに戻すのですか?
- RAMが少ないため、スワップアウトされ、RAMに戻します。その後、システムはできるだけ早くそれらを再びスワップに入れます。
そのため、2つの主要なポイントがあります。
- まず、すべてのプログラムを一度に実行するにはRAMが少なすぎるとシステムが遅くなります。スワップを使用すると、より多くのプログラムを実行できますが、めったに使用されないプログラムにすばやく切り替えることはできません。スワップはめったに使用されないものを強制終了したり、現在使用されているものをメモリ不足例外にしたりすることはできません。
- 第二に、スワップは良いことであり、スワップを使用することもできます。これは、現在使用していないプログラムのコストで空きRAMを使用できるためです。
あまりにも多くのプログラムでメモリ不足の問題は発生していませんが、一部のプログラムは現在の空きRAMに基づいてメモリを割り当てる場合があり(ブラウザはより多くのmemcacheを使用し、より速くブラウジングできます)、カーネルはディスクキャッシュに空きRAMを使用できます。同様の最適化。強制的にスワップを空にすると、カーネルは読み取りキャッシュをドロップします。たとえば、新しいFirefoxインスタンスの起動には、Firefoxがまだディスクキャッシュにある場合よりも時間がかかります。
カーネルの動作を調整する場合は、swapinessパラメーターを参照してください。
@ peter-cordesによる2つの追加リソースが貢献します。
空のスワップが本当に必要な場合は、スワップを完全にオフにすることができます。私はなぜそれを1時間オンにして、それを空にすることがスワップを持っていないよりも利点があるのかわかりません。