$ 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
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用ですが、質問に対する回答を提供します。