Topの出力内には、メモリとスワップの使用行に「buff/cache」と「avail Mem」とマークされた2つのフィールドがあります。
これら2つのフィールドはどういう意味ですか?
私はそれらをグーグルで試しましたが、結果は上部に一般的な記事を表示するだけであり、それらはこれらのフィールドが何を意味するかを説明していません。
top
のマンページにはフィールドの説明はありませんが、 free
’s は次のように説明しています:
バッファ
カーネルバッファーで使用されるメモリ(
Buffers
in/proc/meminfo
)キャッシュ
ページキャッシュとスラブが使用するメモリ(
Cached
およびSReclaimable
in/proc/meminfo
)buff/cache
バッファとキャッシュの合計
利用可能
スワップせずに新しいアプリケーションを開始するために利用可能なメモリの推定量。キャッシュまたは空きフィールドによって提供されるデータとは異なり、このフィールドではページキャッシュが考慮されます。また、使用中のアイテムが原因ですべての再利用可能なメモリスラブが再利用されるわけではありません(
MemAvailable
in/proc/meminfo
、カーネル3.14で利用可能、カーネル2.6.27+でエミュレート、それ以外は無料と同じ)
基本的に、「buff/cache」は、ディスク上にあるか、すぐに終了するデータに使用されるメモリをカウントし、その結果、潜在的に使用可能になります(対応するメモリは、キャッシュの場合、または十分な時間が与えられれば、すぐに利用可能になります)。バッファの場合—バッファはとにかく小さいままであることになっています); 「available」は、スワッピングを増やすことなく割り当ておよび使用できるメモリの量を測定します( ディストリビューション間で移植可能なメモリの量を取得するにはどうすればよいですか? それ)。
ビットを明確にするために、buffersは、現在書き込まれているデータを指しますwrite-書き込みが完了するまで、メモリを再利用できません。
キャッシュは、過去のデータを参照します読み取り-再度読み取る必要がある場合に備えて保持されますが、常に再読み取りできるため、すぐに再利用できますディスクから。
この情報の正規のソースは/ usr/src/linux/Documentation/filesystems/proc.txt
Buffers:rawディスクブロックの比較的一時的なストレージは、それほど大きくならないはずです(20MB程度)Cached:ディスクから読み込まれたファイルのメモリ内キャッシュ(ページキャッシュ)。 SwapCachedは含まれません。
さらに詳細 こちら 。
Linuxページキャッシュ( "Cached:" meminfoからの)は、ほとんどのシステムでRAM)の最大の単一のコンシューマです。ディスク上のファイルからread()を実行すると、そのデータがメモリに読み込まれ、ページキャッシュ(1.)に入ります。
バッファキャッシュ(meminfoの "Buffers:")は、dentry/inodeキャッシュに近いものです。
または this 。のようなソースコードを分析します
buffers
の量は、関数nr_blockdev_pages(void)
の戻り値です
long nr_blockdev_pages(void)
{
struct block_device *bdev;
long ret = 0;
spin_lock(&bdev_lock);
list_for_each_entry(bdev, &all_bdevs, bd_list) {
ret += bdev->bd_inode->i_mapping->nrpages;
}
spin_unlock(&bdev_lock);
return ret;
}
cached
の量:
global_page_state(NR_FILE_PAGES) – total_swapcache_pages – i.bufferram