web-dev-qa-db-ja.com

上部の「buff / cache」および「avail mem」フィールドはどういう意味ですか?

Topの出力内には、メモリとスワップの使用行に「buff/cache」と「avail Mem」とマークされた2つのフィールドがあります。

enter image description here

これら2つのフィールドはどういう意味ですか?

私はそれらをグーグルで試しましたが、結果は上部に一般的な記事を表示するだけであり、それらはこれらのフィールドが何を意味するかを説明していません。

37
user2064000

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」は、スワッピングを増やすことなく割り当ておよび使用できるメモリの量を測定します( ディストリビューション間で移植可能なメモリの量を取得するにはどうすればよいですか? それ)。

38
Stephen Kitt

ビットを明確にするために、buffersは、現在書き込まれているデータを指しますwrite-書き込みが完了するまで、メモリを再利用できません。

キャッシュは、過去のデータを参照します読み取り-再度読み取る必要がある場合に備えて保持されますが、常に再読み取りできるため、すぐに再利用できますディスクから。

4
WallStProg

この情報の正規のソースは/ 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
2
axiqia