これら 質問free コマンドの形式を簡単にリストします。バッファはディスクに書き込む必要があるカーネルメモリですが、キャッシュはディスクに書き込む必要のないファイルデータです。
私のシステムでは、ほとんどのフリーランとは異なり、バッファはRAMの10%以上を占めています。通常、バッファは小さなトークン値に近いです。
私の質問は、バッファ領域は正確に何ですか?検索を使用できますかlsof
?まだフラッシュされていないオープンファイル領域が含まれていますか?メモリマッピングファイル領域ですか?それは何ですか?
システムはうまく機能し、スワップスペースをほとんど使用しないため、パフォーマンスが良いです。
答え1
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転送、ネットワークパケット、ソケットバッファなどの同じサイズの単位を継続的に割り当てて解放する必要があります。
以下を実行すると、キャッシュとバッファの割り当てをよりよく理解できます。slabtop
使用の質問に答えるために、システムは通常必要以上のブロックを割り当てますが、「メモリ圧力」が増加すると、これらの追加ブロックは解放されます。
答え2
「バッファ」はメモリー圧迫の下でリサイクル可能です。したがって、ページキャッシュ(「キャッシュ」バー)に似ているので、心配する必要はありません。 「バッファ」値は、システムが実行する操作に応じて小さくても大きくてもかまいません。 :-).これには、さまざまな種類のキャッシュが含まれていることがわかります。
バッファキャッシュは実際にはブロックデバイスのページキャッシュです。 Linuxはこれを別々に報告します。 [*]プログラムがブロックデバイスノードを読み書きするときに「バッファ」が使用されることがわかりますdd status=progress if=/dev/sda of=/dev/null
。明らかに、人々はDVDプレーヤープログラムを実行してもこのことに気づきます。
証拠については、以下を参照してください。RAMの30%は「バッファ」です。それは何ですか?
ブロックデバイスノードにアクセスできない場合、「バッファ」はおそらくすべてファイルシステムです。メタデータ。ファイルシステムは、便宜上、内部的にバッファキャッシュを使用する。ファイルが重複しないようにします。データ- ファイルコンテンツ - ホームページキャッシュに保存されます。ファイルシステムがバッファキャッシュを使用する正確な目的は、ファイルシステムによって異なります。
物理RAM容量が小さいコンピュータでext3 / ext4ファイルシステムを使用すると、「バッファ」がかなり高くなることがあります。これは、ログへの書き込みがバッファキャッシュを通過するためです。 (上記リンクを参照)。 ext3/4 ファイルシステムは、ディレクトリの内容もバッファキャッシュに格納します。
第二に、コマンドによって表示される「バッファ」には、free
リサイクル可能なスラブを意味するSReclaimableも含まれる。 (デモはこちら:Linuxメモリを再監視する正しい方法)。
タブレットメモリはいいえページ/バッファキャッシュの一部です。しかし、一緒に数えるのが便利です。すべてリサイクル可能でリサイクル可能なタブレットの主な(唯一の)用途はファイルシステムキャッシュです。たとえば、ファイルメタデータ(インデックスノード)とパスルックアップ(ディレクトリエントリ)は、回収可能なスラブにキャッシュされます。 」ファイルが多く、ほとんどアイドル状態のシステムでは、回収可能なタブレットメモリがシステムメモリの大部分を占める可能性があります。」。
でソースBuffers
とSReclaimable
値を確認できますcat /proc/meminfo
。実行してslabtop
ボードのリストを表示することもできます。 AFAICT は、slabtop
錠剤のリサイクル可能性に関する統計情報を提供しません。しかし、一般的に疑わしい部分があれば、名前で探してみると推測できます。
[*] この回答の目的に応じて、「バッファキャッシュ」はcountのBuffers
キャッシュです/proc/meminfo
。しかし、他のソースでは、全ページキャッシュを統合バッファキャッシュと呼ぶこともできる。歴史的な説明については、最初のリンクをご覧ください。
さらに、Linux開発者は、ファイルシステムの実装について議論するときに、「バッファキャッシュ」を別の意味で使用できます。
答え3
第二に、freeコマンドで表示される「バッファ」には、SReclaimableも含まれます。
freeコマンド(バージョン3.3.15)のマニュアルページによると、「タブレットで使用されるキャッシュページのキャッシュとメモリ(/proc/meminfoのキャッシュとSReclaimable)」
したがって、SReclaimable を含めるのはバッファではなくキャッシュです。