web-dev-qa-db-ja.com

freeコマンドで表示されるbuff / cacheが、vmstatおよびmeminfoにリストされているものよりも多いのはなぜですか?

$ free
              total        used        free      shared  buff/cache   available
Mem:       16349804     4727520     9075260       13992     2547024    11238920
Swap:      19528700       12284    19516416

$ cat /proc/vmstat
nr_free_pages 2268791
nr_file_pages 502861

$ cat /proc/meminfo
MemTotal:       16349804 kB
MemFree:         9075360 kB
MemAvailable:   11239020 kB
Buffers:         1063716 kB
Cached:           939312 kB
SwapCached:         8416 kB

Freeコマンドで表示されるbuff/cache(2547024)がvmstat(502861 * 4 = 2011444)またはmeminfo(1063716 + 939312 + 8416 = 2011444)にリストされているものよりも多いのはなぜですか?

$ uname -a
Linux OP3020 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ free --version
free from procps-ng 3.3.10
3
Bbs Faqs

freeコマンドに表示される「bufferandcache」フィールドは、バージョンprocps-ng3.3.10の後に変更されました。

3.3.10より前のバージョンでは、freeコマンドは以下のようにバッファとキャッシュを別々に表示します

$ free
             total       used       free     shared    buffers     cached
Mem:      16333720   15321808    1011912          0      48860    3062900
-/+ buffers/cache:   12210048    4123672
Swap:      5242872     518732    4724140

しかし、その自由なコマンドがフィールドbuff/cacheを表示した後は、/proc/meminfoファイルのバッファ、キャッシュ、スラブの合計になります。

$ free
              total        used        free      shared  buff/cache   available
Mem:       32780676     2597432     4668032     1474028    25515212    28146744
Swap:       8388604       58692     8329912
/proc/meminfo
Buffers:            3140 kB
Cached:         24345064 kB
SwapCached:           64 kB
Slab:            1167008 kB

ここで、Buffers(3140)、Cached(24345064)、およびSlab(1167008)の合計は、「free」コマンド出力の「buff/cache」フィールドに等しくなります。詳細については、 ここ を参照してください。これはRHEL用ですが、質問に対する回答を提供します。

1
Bill Clinton J