RAMにキャッシュがいっぱいですが、システムがスワップを使用するのはなぜですか?

RAMにキャッシュがいっぱいですが、システムがスワップを使用するのはなぜですか?

私はopenSUSE TW、32 GiB RAM、64 GiBスワップ(SSD)を実行しています。

RAM がキャッシュで完全に満たされるまで、スワップ領域の使用量は 0 です。

私はそれを監視するためにhtopを使用しています。黄色/オレンジ=キャッシュ

私のシステムは2GiBのRAMを使用していますが、残り(30GiB)はキャッシュです。その後、他のデータのためのスペースを解放するために必要なときにいくつかのキャッシュを破棄するのではなく、わずか数MiBのスワップしか使い始めません。しかし、誓いには少しの静止現象が感じられ、システムが時々目立って遅くなります。

なぜそんなことですか?どうですか?

私は要求された情報を喜んで提供します。


vmstat 60 5 vmstat 60 5

vm.swappiness = 1
vm.dirty_ratio = 20
vm.dirty_background_ratio = 10

答え1

交換性を0に設定できます。 Linux ドキュメントには次のように記載されています。

このコントロールは、カーネルがメモリページをどれだけ積極的にスワップするかを定義するために使用されます(sic)。を開始しないように指示します。無料とファイルのバックアップページの量は、その領域のトップ透かしより少ないです。

デフォルトは60です。 」

swappiness を 0 に設定しても、スワッピングが完全に削除されるわけではなく、条件付きスワッピングが続行されます。

ところが交換に問題があるのでしょうか?私の考えには、あまり使われていないページのほんの一部だけを置き換える価値があると思います。スワップに問題がないかどうかを確認するには、vmstat 60しばらく実行してからsi合計so列を確認してください。ほとんどの場合、ゼロであることがわかります。また、お客様の列はswpd大幅に変更されません。これは、交換が問題にならないことを意味します。

swapoff現在実行中のタスクを実行するのに十分なメモリがあり、特定の理由(スワップスペース)のためにスワップスペースを使用したくない場合はありますか?

これらのパラメータを使用すると、システムが停止した場合にスワッピングによるものではない可能性が高くなります。もちろん、出力の4列と列siso高さvmstatが大きくない場合は除外されます。

- 編集する -

出力vmstat結果は、複数ページが交換されたことを示します。大きな交換は発生しないので心配する必要はありません。もちろん、システムが停止するのに十分ではありません。

関連情報