
Debian Squeeze 6.0.5 を実行しています。スワップ メモリを使用すると、コンピュータの動作が遅くなりますか? もしそうなら、システムをインストールした後でスワップ メモリのサイズを減らすにはどうすればよいですか?
答え1
常にスワップを減らしたいわけではなく、代わりにスワップの怠惰な使用を増やしたい場合がよくあります。スワップにすでにクリーンなページが多ければ多いほど、空きRAMが必要になったときに簡単にRAMから切り離すことができます。ただし、Linux VMはスワップに関して奇妙な動作をします。ディスクI/Oが集中すると(巨大なファイルなどcp
)、システムのスワップが不必要に多くなることがあります。これは、ある程度軽減できます。減少 vm.swappinness
そして増加 vfs_cache_pressure
こうした対策の効果は必ずしも期待通りではないが、スワップここでは、一部のワークロードでは役立つ場合があります。
答え2
スワップを一時的にオフにするには、(root として) 次のコマンドを使用します。
swapoff -a
再度オンにするには:
swapon -a
永続的にオフにするには、ファイルを編集し/etc/fstab
、type 列に swap が含まれる行をコメント アウトします。
スワップを増やすと必ずしもパフォーマンスが向上するわけではありません。スワップを減らしたり、オフにしたりしたほうがよい場合もあります。すべてはアプリケーションの組み合わせによって異なります。
すぐにグーグルで検索してみたところ、この件に関する良い記事が見つかりました。
https://www.linux.com/news/software/applications/8208-all-about-linux-swap-space
答え3
スワップには基本的に 2 つの目的があります。スワップにより、パフォーマンスを犠牲にして物理メモリが不足した場合でも、システムは動作を継続できます。スワップなしで物理メモリが不足すると、クラッシュ、ロックアップが発生し、システムが持つ以上のメモリを要求した瞬間にメモリ不足エラーでプロセスが強制終了されます。この場合のパフォーマンスの低下は、スワップが多すぎることによる症状ではなく、アクティブなプロセスにスワップを使用せざるを得ないことによる症状です。
また、メモリ内のあまり使用されていないページを、再度必要になるまでディスクに移動することで、物理メモリをより効率的に使用できるようになります。これにより、キャッシュ用にメモリが解放されます。これは通常、あまり使用されないプログラム メモリのセグメントを物理 RAM 内にロックしたままにしておくよりも、スペースをより効率的に使用します。
長年のベスト プラクティスは、スワップ領域のサイズを物理メモリの 2 倍にすることです。つまり、1 GB の RAM がある場合は、2 GB をスワップに割り当てます。これは今でも良いアドバイスですが、実際には、4 GB 以上の物理 RAM を搭載した最新のシステムでは、通常、システムの物理メモリと同じ量のスワップに減らすことができます。
スワップを使用するときにパフォーマンスを向上させるために実行できる操作がいくつかあります。複数のドライブがある場合は、スワップをより高速なハード ドライブまたはあまり使用されていないハード ドライブに移動することをお勧めします。IO に非常に依存しているシステムでは、これを行うことでパフォーマンスが大幅に向上する可能性があります。従来のハード ドライブの場合、スワップを物理ディスクの中央に近づけると効果がある場合があります。これは、ドライブ ヘッドの移動が少ないため、中央ではシーク時間が短くなるのが一般的だからです。
SSD にスワップを設けることも大きな助けになりますが、SSD の消耗が激しくなり、寿命が短くなる可能性があるので注意してください。
もちろん、メモリ パフォーマンスを改善するための最善の解決策は通常、ボックスに RAM を追加することです。メモリ使用量を確認し、空きメモリがほとんどないかまったくなく、スワップの使用率が高い場合は、RAM を増設する時期が来たことを示しています。
答え4
使用することで効果はありますが、スワップが存在することで効果は得られません。メモリを大量に消費するプログラムを一度に実行すると、スワップが使用されるため、速度が低下します。
本当に削減したい場合は、ライブ CD を起動してgparted
パーティションのサイズを変更してください。