web-dev-qa-db-ja.com

スワップは高いですが、設定はswappiness = 1です

ムーンサーバー-バージョンrhel 7.5

このサーバーでスワップを消費する動作は非常に奇妙です

/proc/sys/vm/swappinessを1にしてサーバーを再起動します

しかし、サーバーが44Gであるときにサーバーが15Gを消費していることがわかります!!

どうしてできるの??

[root@moon01 network-scripts]# more /proc/sys/vm/swappiness
1
[root@moon01 network-scripts]# free -g
              total        used        free      shared  buff/cache   available
Mem:            125          80          38           0           6          44
Swap:            15          15           0

利用できるのが最後の数ギガラムに近い場合のみ私の理解から、スワップは増加します

しかし、これは状況ではありません

3
yael

でもで swappiness=1 Linuxは、可能な場合は引き続きスワップを使用します。ユーザースペースプログラムは無料で使い尽くす必要はありませんRAMカーネルがスワッピングを開始するため。最初にこれを発見しました buntu Linuxデスクトップで問題が発生していた

私の質問に対する回答とコメントで、誰かがディスクキャッシュが原因である可能性があると指摘しました。メモリ内の「空き」スペースが空になることはほとんどありません。カーネルはそれをディスクキャッシュを含むキャッシュに静かに使用し、アプリケーションがより多くのメモリを必要とするときはいつでもキャッシュを放棄できるという知識で安全です。

カーネルドックでリファレンスを探しています。しかし、大部分のプログラムが、起動時にのみ使用され、その後は二度と使用されない大量のメモリ(コードを含む)を持つ方法のどこかに良い説明があります。そのため、特にサーバーでは、メモリに大量の「ジャンク」が存在し、ディスクキャッシュなどの有用なものからスペースを奪います。 Linuxはこれを認識しており、ディスクキャッシュからページを破棄するのではなく、ジャンクを交換することを選択します。これには、スワップの使用量を徐々に増やし、キャッシュのサイズを徐々に増やす効果があります。 「空き」メモリが比較的高いままであるにもかかわらず、これを行います。

つまり、これは予想される動作であり、これをオフにする簡単な方法はありません。

7
Philip Couling