运行时systemd-cgtop
,我得到以下结果(仅显示前几行):
Control Group Tasks %CPU Memory Input/s Output/s
/ 1752 92.2 29.0G - -
/mycgroup - - 3.3M - -
/system.slice 98 - - - -
/system.slice/ModemManager.service 3 - - - -
/system.slice/NetworkManager.service 4 - - - -
/system.slice/accounts-daemon.service 3 - - - -
/system.slice/acpid.service
请注意,我的 cgroup(位于第二行)占用了大约 3.3M 内存。事实上,当我运行
cat /var/cgroups/mycgroup/memory.usage_in_bytes
3530752
我不确定这些内存使用量来自哪里。我该如何检测谁在使用这部分内存,以及我该怎么做才能强制停止此 cgroup 中所有进程的内存使用量,而无需删除该 cgroup?
我拥有的其他 cgroup 不消耗该内存。
答案1
我认为这表示有未回收的缓存内存。最有可能的是,您确实曾经在 cgroup 中运行过一个任务,但后来停止了它。缓存内存可能仍然存在。
如果 cgroup 中没有正在运行的任务,您可以强制清空:
echo 0 >/sys/fs/cgroup/memory/mycgroup/memory.force_empty