より多くのLinuxメモリ:空きメモリでもキャッシュでもない空きメモリ!

最近、お客様からサポートに連絡があり、Linuxサーバーのメモリ使用率が高い理由を知りました。 私たちはかなり話しました Linuxメモリの監視、およびそれが何を意味するか。 しかし、このケースは少し異なっていました。 顧客はそれによると 無料です。, top、およびLogicMonitorグラフでは、彼のサーバーのメモリのほとんどが使用されていました。ファイルシステムのキャッシュとしてではありませんでした。
メモリーモジュール

ただし、奇妙なことに、topとpsは、RSS(常駐セグメントサイズ)のすべてのプロセスの合計がほとんどメモリを消費していないことを示していました。 それで、記憶はどこに行きましたか?

人々が不平を言う最も一般的な理由は、 top プロセスが使用する常駐メモリに加算されないのは、ほとんどのメモリがキャッシュ(つまり、実際には空きメモリ)によって使用されていることに気付かないためです。しかし、ここではそうではありませんでした。

/ proc / meminfoの内容を見ると、次のXNUMX行が示されています。

スラブ:4126212 kB S再生可能:4096172 kB

つまり、ほぼ4Gのメモリがカーネルスラブメモリ構造によって使用されていましたが、そのメモリのほとんどすべてが再利用可能でした。 (または、事実上、無料です。)

したがって、再利用可能なスラブスペースは、Linuxメモリを実質的に解放できるもうXNUMXつの方法ですが、空きメモリの統計には表示されません。

これにより、Linuxシステムのメモリを監視する方法が変わりますか? どういたしまして。 Linuxは、利用可能な物理メモリとその中のデータ構造をうまく管理します。 物理メモリが少なくなると、ディスクでバックアップされた仮想メモリへのスワップアウトが開始されます。 XNUMX秒あたりにスワップされるブロックの速度を監視していて、これがかなり少ない数である限り、物理メモリが何に使用されているかは実際には問題ではありません。

もちろん、slabtop、/ proc / slabinfoを使用して、スラブを使用しているものを掘り下げ、min_slab_ratioなどのために/ proc / sys / vmのものの調整を開始することができます…

ただし、このシステムでアクティブなページングがない限り、気にする必要はありません。
すべてが正常に機能しており、メモリが少なくなると、カーネルは再利用可能なスラブ(4G相当)を放棄します。