スワップを完全に無効にする方法は?

スワップを完全に無効にする方法は?

私はDebian sidを使用しており、ハードディスクはext4でフォーマットされており、Linux 3.1で実行されています。

以前のLinuxバージョン(おそらく3.0より前)では、メモリが不足していてスワッピングが有効になっていないと、プログラムがクラッシュしたことがよくあります。これは私の環境に最適です。簡単なウェブ検索が必要で、重要な作業は必要ありません。つまり、メモリが多すぎる悪いウェブサイトを誤って見つけた場合、端末が利用できなくなるのではなく、衝突が発生する可能性があります。

ただし、現在の設定ではI / Oスループットが高く、コンピュータはバックグラウンドで機能しません。 iotop は kswapd0 を犯人として表示します。これはスワッピングによるものです。これを使用してswapon -s有効なスワップを識別した後、swapoff -aすべてのスワップを無効にし、swapon -sすべてのスワップが無効になっていることを再確認しました。

その後、もう一度メモリ使用量を最大化してみました。ああ、私が期待していた行動は起こりませんでした。代わりに、kswapd0 は RAM スワップを試行し続けますが、スワップ領域がないため失敗します。決してあきらめないので、私のコンピュータは永続的なI / O停止状態に陥り、これは私のディスク状態には悪いです。

私が何かを間違えようとしているのでしょうかswapoff -a?以前(おそらく3.0時代以前)と動作が異なるのはなぜですか?

ベストアンサー1

スワップを無効にすると、目的の効果は表示されません。それでも劇的なI / Oスループットが得られますが、ダーティページではなくクリーンページになります。

スワッピングがないと、システムはクリーン(未修正)ページのキャッシュをゼロに近づけて圧縮します。これは、これらのページが物理メモリから削除できる唯一のページであるためです。ダーティページ(修正済み)をスワップ領域に書き込むことで、メモリからダーティページのみを削除でき、スワップ領域がないとダーティページを削除できません。

物理メモリが不足すると、各プロセスは古いプロセスコードページを削除するため、ディスクからそのコードページをロードする必要があります。その結果、スイッチングサブシステムの重大なスラッシングと過度の作業が発生します。

これは非常に重要な原則の特別なケースです。オプションを減らしても、うまく設計されたシステムをよりよく実行することはできません。 Linuxはよく設計されたシステムです。スワップを削除するとオプションが少なくなるため、パフォーマンスが悪くなることは驚くべきことではありません。

おすすめ記事