ムーンサーバー-バージョン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
利用できるのが最後の数ギガラムに近い場合のみ私の理解から、スワップは増加します
しかし、これは状況ではありません
でもで swappiness=1
Linuxは、可能な場合は引き続きスワップを使用します。ユーザースペースプログラムは無料で使い尽くす必要はありませんRAMカーネルがスワッピングを開始するため。最初にこれを発見しました buntu Linuxデスクトップで問題が発生していた 。
私の質問に対する回答とコメントで、誰かがディスクキャッシュが原因である可能性があると指摘しました。メモリ内の「空き」スペースが空になることはほとんどありません。カーネルはそれをディスクキャッシュを含むキャッシュに静かに使用し、アプリケーションがより多くのメモリを必要とするときはいつでもキャッシュを放棄できるという知識で安全です。
カーネルドックでリファレンスを探しています。しかし、大部分のプログラムが、起動時にのみ使用され、その後は二度と使用されない大量のメモリ(コードを含む)を持つ方法のどこかに良い説明があります。そのため、特にサーバーでは、メモリに大量の「ジャンク」が存在し、ディスクキャッシュなどの有用なものからスペースを奪います。 Linuxはこれを認識しており、ディスクキャッシュからページを破棄するのではなく、ジャンクを交換することを選択します。これには、スワップの使用量を徐々に増やし、キャッシュのサイズを徐々に増やす効果があります。 「空き」メモリが比較的高いままであるにもかかわらず、これを行います。
つまり、これは予想される動作であり、これをオフにする簡単な方法はありません。