topの「buff / cache」および「avail mem」フィールドの意味は何ですか?


28

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

ここに画像の説明を入力してください

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

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

回答:


31

topmanページには、フィールドを説明していませんが、free「sが行います。

バッファ

カーネルバッファが使用するメモリ(Buffers/proc/meminfo

キャッシュ

ページキャッシュと(スラブが使用するメモリCachedSReclaimable/proc/meminfo

バフ/キャッシュ

バッファーとキャッシュの合計

利用可能

スワップなしで、新しいアプリケーションを開始するために使用可能なメモリの量の推定。キャッシュまたはフリーフィールドによって提供されたデータとは異なり、このフィールドはありません、すべての再生可能メモリスラブ(原因使用中のアイテムに再利用されることもアカウントページキャッシュに取り、MemAvailable/proc/meminfoのカーネル上でエミュレートカーネル3.14、上で利用できる、2.6.27+ 、それ以外はfreeと同じ)

基本的に、「バフ/キャッシュ」は、ディスク上にある、またはすぐにそこに到達するデータに使用されるメモリをカウントし、結果として潜在的に使用可能です(キャッシュの場合、対応するメモリをすぐに使用可能にするか、十分な時間を与えると、バッファの場合—後者はとにかく小さいままであることになっています); 「使用可能」とは、スワッピングを発生させずに割り当ておよび使用できるメモリ量を測定します(詳細については、「使用可能なメモリ量をディストリビューション間で移植可能にする方法」を参照してください)。


1
十分な時間がある場合、バッファ/キャッシュは利用できません。これらは、プログラムに割り当てられるメモリが必要な場合にすぐに使用できるメモリセグメントです。linuxatemyram.com
DopeGhoti

4

少しだけ明確にするために、バッファとは、書き込まれているデータを指します。そのメモリは、書き込みが完了するまで再生できません。

キャッシュとは、読み取られたデータを指します。再び読み取る必要がある場合に備えて保持されますが、ディスクからいつでも再読み取りできるため、すぐに再利用できます。


それはここで本当に意味するものではありません。 特に/proc/meminfoフィールドがありWritebackます。そこ別々のフィールドがありBuffers、それはとして示されているものであるbuffersの中でfree -wBuffersメモリ使用の一般的な理由は次のとおりです。「RAMの30%が「バッファ」です。それは何ですか?
sourcejedi

これ(access.redhat.com/solutions/406773)から、ライトバックは、まだディスクに書き込まれていないバッファーの部分であると考えています。それとも別のことを言っていますか?
WallStProg

その説明は誤解を招くでしょう。Buffers(現在)ページキャッシュの一部です。それはカウントされませんCachedが、それはの一部としてカウントされActive(file) + Inactive(file)ます。スティーブン・キットの答えに対するコメントをご覧ください。 Dirtyは書き込まれたページキャッシュの一部であるため、最終的にはディスクに書き戻す必要があります。 Writebackは含まれませんDirty。したがって、Writebackはの値の一部ではありませんBuffers
sourcejedi

Buffers実際に意味することは、ブロックデバイスに関連付けられたページのキャッシュです。一部のファイルシステムはこれを内部的に使用します。他の人はまったく使用しません。/「RAMの30%はバッファです」という質問に対する回答を修正します。
sourcejedi

2

この情報の標準的なソースは /usr/src/linux/Documentation/filesystems/proc.txtです

バッファ:RAWディスクブロックの比較的一時的なストレージが極端に大きくなることはありません(20MB程度) キャッシュ:ディスクから読み取られるファイルのメモリ内キャッシュ(ページキャッシュ)。SwapCachedは含まれません。

また、ここで詳細を確認することもできます

Linux Page Cache(meminfoの「Cached:」)は、ほとんどのシステムで最大のRAM消費者です。ディスク上のファイルからread()を実行すると、そのデータはメモリに読み込まれ、ページキャッシュ(1.)に入ります。
バッファキャッシュ(meminfoの「Buffers:」)は、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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.