web-dev-qa-db-ja.com

Linux上で空き/キャッシュ/利用可能なメモリ

私は read Linuxがキャッシュに空きメモリを使用して、システムを高速化することを知っています。ただし、NagiosとPaessler PRTG監視システムの両方で、私のメモリ使用量が重要であることを示しています。

Nagios mem_usageスクリプトを変更して空きメモリとキャッシュメモリを合計することもできますが、それは正しい情報でしょうか? Linuxのメモリ使用量を誤解していたのではないかと思います。

私が8GBのRAMを持っているとしましょう。 5 GBが使用され、2 GBがキャッシュされ、1GBの空きメモリがあります。実際に使用可能なメモリは空き+キャッシュ(3 GB)にする必要がありますか?新しいアプリケーションに追加の3GB RAMが必要な場合、スワップを使用せずにキャッシュからすべてを解放して解放できますか、それともキャッシュに必要な最小要件がありますか?

実際の例:

$ cat /proc/meminfo
MemTotal:        5984256 kB
MemFree:          137052 kB
Buffers:          140484 kB
Cached:          3439616 kB
SwapCached:          244 kB
Active:          3148824 kB
Inactive:        2341768 kB
...

私の監視ツールは、137 MBの空きRAMがあることを示していますが、キャッシュには最大3.5GBあります。

ありがとう!

7
pkoraca

Nagiosでcheck_mem.plプラグインを使用したときと同じ経験がありました。クリティカルのトレスホールドを定義するときは、通常のcではなく大文字のCを使用する必要があります。

このような:

command[check_mem]=/usr/lib/nagios/plugins/check_mem -w 10 -C 5 -f

次に、キャッシュされたメモリを考慮に入れ、警告を送信しません。

14
Lucas Kauffman

Freememは、すぐに利用できる未割り当てのメモリです。これはプログラムの起動時に使用され、通常、これが低くなりすぎると問題が発生します。数MBの空き容量があることを確認するための監視で十分です。 32 MBのOpenWrtルーターでは1 MB、Ubuntuサーバーでは10 MBを監視しています。スワップの使用量も監視します。これは、メモリの負荷が増えると減少するためです。

プログラムが起動すると、通常、最初は必要なすべてのメモリを使用しません。プログラムの仮想サイズは、常駐(メモリ内)サイズよりもはるかに大きくなるのが一般的です。残りのメモリは、ディスク(プログラムが使用するプログラムイメージとライブラリのコード)およびスワップ(割り当てられているが使用されていない)から割り当てることができます。

キャッシュされたメモリが少なくなりすぎると、重大なパフォーマンスの問題が発生する可能性があります。スワッピングがどのようにコード化および構成されているかに応じて、非アクティブなページがスワップされてプログラム用のスペースが作成される可能性があります。これは通常、予想よりもはるかに少ないページスワッピングになります。

キャッシュされたメモリを監視して、巨大なプログラムを開始するためにメモリが利用可能であることを確認するのではなく、実行中のプログラムのパフォーマンスを確認します。

3
BillThor

メモリの問題はないようです。両方のシステムのワークロードは同じだと思います。その場合、ほぼ同等の状況では、同じ量のキャッシュされたメモリが消費されます。

Commit_ASの部分でもうまくいくようです。 2番目のシステムでは、必要がないため、キャッシュされたメモリはあまりありません。 Linuxは需要ベースの仮想メモリ管理システムであるため、メモリを使用するとかなりうまく動作します。システムのワークロードが増加すると、キャッシュメモリが増加します。

1

Meminfoの出力全体を出力する必要があります。ダーティページはディスクでサポートされますが、ページキャッシュとしてカウントされるため、要件に基づいてディスクにフラッシュする必要があります。

一言で言えば、あなたが言っていることは正しいです。空きメモリを計算するときは、キャッシュとバッファも考慮に入れますが、ダーティページは計算しないでください。

また、メモリが不足しないように、Committed_AS値のアカウントを保持してください。その値に基づいて、RAMを増やすか、作業負荷を減らすかを決定する必要があります。

1