free
/proc/meminfo
からデータを引き出します
slkwr133701:/usr/src/linux # free
total used free shared buffers cached
Mem: 2053456 434572 1618884 0 77888 201820
slkwr133701:/usr/src/linux # cat /proc/meminfo
MemTotal: 2053456 kB
MemFree: 1618736 kB
Buffers: 77928 kB
....
これは、一時的なブロック I/O ストレージに使用されるメモリを指します。カーネルは、ブロック I/O 転送、ネットワーク パケット、およびソケット バッファのように、同じサイズのユニットを常に割り当てて解放する必要があります
slabtop
を実行すると、キャッシュとバッファの割り当てをよりよく確認できます。
使用方法に関する質問への回答:通常、システムは必要以上のブロックを割り当てますが、「メモリ プレッシャ」が増加すると、これらの追加のブロックが解放されます。
「バッファ」は、メモリ不足の下で再利用可能です。したがって、ページ キャッシュ (「キャッシュ」列) に似ています。大きな懸念材料ではありません。 「バッファ」の値は小さくても大きくてもかまいません。システムが何をしているかによって異なります:-)。ここで数種類のキャッシュを数えることができます。
バッファ キャッシュは文字通り、ブロック デバイスのページ キャッシュです。 Linux はこれらを別々に報告するだけです。 dd status=progress if=/dev/sda of=/dev/null
.どうやら、DVD プレーヤー プログラムを実行しているときにも、この問題に気付く人がいるようです。
証明については、次を参照してください:RAM の 30% は「バッファ」です。それは何ですか?
ブロックデバイスノードにアクセスしていない場合、「バッファ」はおそらくすべてファイルシステム メタデータ です .ファイルシステムは、便宜上バッファ キャッシュを内部的に使用します。ファイル データ が重複しないようにします - ファイルの内容 - メインページのキャッシュに保存されます。ファイルシステムがバッファキャッシュを使用する正確な目的は、ファイルシステムによって異なります。
少量の物理 RAM を搭載したマシンで、ext3/ext4 ファイルシステムを使用すると、「バッファ」が高く見えることに気付きました。これは、ジャーナルへの書き込みがバッファ キャッシュを通過するためです。 (上記のリンクを参照)。 ext3/4 ファイルシステムは、ディレクトリの内容もバッファ キャッシュに格納します。
次に、free
で示される「バッファ」 コマンドには、再利用可能なスラブを意味する SReclaimable も含まれています。 (ここでデモ:Linux メモリを監視する正しい方法、再び).
スラブメモリはではない ページ/バッファ キャッシュの一部。ただし、それらをまとめて数えると便利です。どちらも再利用可能であり、再利用可能なスラブの主な (唯一の?) 用途は、ファイルシステムのキャッシングです。たとえば、ファイル メタデータ (inode) とパス ルックアップ (dentry) は、再利用可能なスラブにキャッシュされます。 「再利用可能なスラブ メモリは、多くのファイルを含むほとんどアイドル状態のシステムで、システム メモリの大部分を占める可能性があります。」
生の Buffers
を見ることができます そして SReclaimable
cat /proc/meminfo
の値 . slabtop
を実行することもできます スラブのリストを表示します。 AFAICT、slabtop
再利用可能かどうかのスラブに関する統計情報を提供しません。しかし、通常は推測できます。疑わしいスラブがあれば、名前で調べることができると思います。
[*] この回答の目的上、「バッファ キャッシュ」は Buffers
でカウントされるキャッシュです。 /proc/meminfo
で .ただし、他の情報源では、ページ キャッシュ全体を統合バッファ キャッシュと呼んでいる場合があります。歴史的な説明が必要な場合は、最初のリンクを参照してください。
また、Linux 開発者は、ファイルシステムの実装について口論していたときに、別の意味で「バッファ キャッシュ」を使用した可能性があります。