top
のマンページにはフィールドの説明はありませんが、 free
の場合:
バッファ
カーネル バッファが使用するメモリ (Buffers
/proc/meminfo
で )
キャッシュ
ページ キャッシュとスラブによって使用されるメモリ (Cached
そしてSReclaimable
/proc/meminfo
で )
バフ/キャッシュ
バッファとキャッシュの合計
利用可能
スワップなしで新しいアプリケーションを開始するために使用できるメモリ量の見積もり。キャッシュ フィールドまたはフリー フィールドによって提供されるデータとは異なり、このフィールドはページキャッシュを考慮に入れるほか、使用中のアイテムが原因ですべての再利用可能なメモリ スラブが再利用されるわけではないことも考慮します (MemAvailable
/proc/meminfo
、カーネル 3.14 で利用可能、kernels2.6.27+ でエミュレート、それ以外は無料と同じ)
基本的に、「バッファ/キャッシュ」は、ディスク上にある、またはすぐにそこにあるはずのデータに使用されるメモリをカウントし、その結果、潜在的に使用可能になります (対応するメモリは、読み取られてから変更されていない場合、すぐに利用可能になります) 、または十分な時間が与えられている場合); 「利用可能」は、スワッピングを増やすことなく割り当てて使用できるメモリの量を測定します (詳細については、ディストリビューション間で移植可能な利用可能なメモリの量を取得するにはどうすればよいですか? を参照してください)。
少し明確にするために、バッファ 書き込まれているデータを指します -- そのメモリは、書き込みが完了するまで再利用できません。
キャッシュ 読み取られたデータを指します -- 再度読み取る必要がある場合に備えて保持されますが、いつでもディスクから再読み取りできるため、すぐに再利用できます。
この情報の正規のソースは /usr/src/linux/Documentation/filesystems/proc.txt
<ブロック引用>バッファ :raw ディスク ブロックの比較的一時的なストレージは、極端に大きくなるべきではありません (20MB 程度)。キャッシュ :ディスクから読み込まれたファイルのメモリ内キャッシュ (ページ キャッシュ)。 SwapCached は含まれません。
ここで詳細を確認することもできます。
<ブロック引用>
Linux ページ キャッシュ (「キャッシュ :" from meminfo ) は、ほとんどのシステムで RAM の最大の単一消費者です。ディスク上のファイルから read() を実行するたびに、そのデータはメモリに読み込まれ、ページキャッシュ(1.) に入ります。
バッファ キャッシュ (「バッファ :" in meminfo) は、dentry/inode キャッシュに近いものです。
または、このようにソース コードを分析します。
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