web-dev-qa-db-ja.com

Ubuntu 18.04でのスワップの問題

PCにUbuntu 18.04がインストールされており、8GBの合計メモリがあり、Ubuntuのインストール時に2GBのスワップスペースを使用できました。通常の操作では、メインメモリの約2GBとスワップなしを使用します。

私の問題は、メモリクランチプロセスを実行しているとき、利用可能なすべてのメインメモリを使い果たした後にスワップスペースを使用し始めますが、メモリクランチプロセスを終了すると、メインメモリがGBで利用可能であってもスワップスペースを使用し続けます。スワップを使用しているため、この操作後にPCが遅くなります。そのため、PCを再起動して回復します。

メインメモリが利用可能なときにスワップをクリアできるように、これを修正する方法はありますか?それともバグですか?

1

スワップが解決されると、メモリを消費する操作を実行した後、約2 GBの「通常の」使用に戻っても、一部のスワップは通常使用されたままになります。メモリクランチプロセスを使用した後、他のプロセスの多くはスワップメモリ​​にスワップされます。これらは、他のアクティビティで再び必要になるため、RAMに回収されます。それらは、必要でない限りスワップ状態のままです。通常、スワップの使用が徐々に減少し、システムが再び高速になることがわかります。

より迅速に通常に戻す方法があります。スワップをオフにしてからオンに戻すことで、SWAPからすべてのプロセスをすぐに「フラッシュ」してメインメモリに戻すことができます。これにはコマンドが必要です。

Sudo swapoff -a
Sudo swapon -a
5
vanadium

TL; DR:スワップをリセットしたり、再起動したり、この状況に関して特に何かをする必要はありません。システムを通常に使用している間に自動的に解決します。

これは永続的な状態ではありません。メモリの負荷が低下し、スワップされたメモリページでアプリケーションを使用し始めると、それらは「未」スワップされ、オンデマンドでメインメモリに戻されます。これは1回限りのものであり、もちろん一時的にシステムと影響を受けるアプリケーションの速度が低下します。

通常、スワップされたページは使用されないため、スワップされたままになります。これは、アプリケーションが誤って使用しなくなったリソースの放棄に失敗した場合、または実際に必要なリソースより多くのリソースを取得した場合に発生する可能性があります。小規模では、これは(仮想)メモリ管理の観点からは悪いことでも問題でもありません。セカンダリメモリは十分に安く、確かにメインメモリよりも豊富で安価なので、数ギガバイトの永続的にスワップされたメモリがあったとしても、それほど害はありません(スワップスペースを少し増やしてゆるめる必要がある場合を除く)他の目的のための小さなストレージスペース)。

1
David Foerster