为什么 free 命令报告的内存使用量数字与 cgroup 报告的有很大不同?
$ free -b
total used free shared buff/cache available
Mem: 2096914432 520863744 1112170496 35389440 463880192 1356828672
Swap: 2145382400 0 2145382400
$ cat /sys/fs/cgroup/memory/memory.usage_in_bytes
857239552
cgroups 的文档称,memory.usage_in_bytes 是一个“模糊值”。我猜这只是意味着它报告的估计值接近实际值。即使它是一个估计值,我认为它不应该相差这么远。
我在 VirutalBox VM 中运行 Linux Mint 18.2。
答案1
memory.usage_in_bytes
并memory.max_usage_in_bytes
报告RSS + CACHE,因此就您的free
输出而言:
memory.usage_in_bytes ~= free.used + free.(buff/cache) - (buff)
您可能还对此感兴趣/sys/fs/cgroup/memory/memory.stat
,但我仍然无法free.used
从/sys/fs/cgroup/memory/memory.stat
输出中找到/计算值。