GNU/Linux >> Linux の 問題 >  >> Linux

free からの出力の buffers 列は何ですか?

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 開発者は、ファイルシステムの実装について口論していたときに、別の意味で「バッファ キャッシュ」を使用した可能性があります。


Linux
  1. コマンドラインから使用しているOsXのバージョンを確認するにはどうすればよいですか?

  2. Linux – Freeからの出力のBuffers列?

  3. Psの出力にはどういう意味がありますか?

  1. ntpq -p 出力の refid は何ですか?

  2. ファイルの 2 列目を出力する

  3. Linux のパイプ記号 |行う?

  1. bcache からキャッシュ デバイスを削除するにはどうすればよいですか?

  2. RAM の 30% はバッファです。それは何ですか?

  3. free の出力におけるバッファ/キャッシュ ラインの意味