我正在使用 lxd 运行多个容器,但在报告内存使用情况时遇到问题:和htop
都free
显示内存使用率高,但使用内存的进程列表非常短,并且与报告的使用情况不符。
从裸机来看,这是 htop 显示的内容(按%MEM
用户空间线程隐藏排序):
这是free -mh
:
total used free shared buff/cache available
Mem: 15G 8.2G 5.5G 576M 1.6G 5.4G
Swap: 9G 297M 9.7G
从 htop 截图来看,我预计总内存使用量约为 2G+(加上 RES 值),而不是 10G+。从为什么“top”中的内存使用量没有累加?,报告的“实际使用”内存仍为~6.6G。
我是否遗漏了什么,显示的内存报告是否连贯?
答案1
我认为记忆报告可能是正确的。
top 显示前 22 个进程,并声称总共有 789 个。显示的进程占用了 6.6G 中的大约 1900MB,其余 767 个进程占用了大约 4897 MB。这导致其余进程的平均每个进程占用 6 MB 多一点。你有理由相信这是不可能的吗?在不知道它们是什么类型的进程的情况下,我不知道如何估计它们的内存使用量,除了 < 14.5 MB。
答案2
如果您的整个操作系统都在虚拟化环境(如 VMWare)中运行,这可能是由于记忆膨胀。
要检查内存膨胀,请安装open-vm-tools
包并运行:
$ vmware-toolbox-cmd stat balloon
5172 MB