更新时间:2023-02-02 21:10:12
是的,已经报道了类似的问题此处.
Yes, a similar issue has been reported here.
这就是其中之一的coolljt0725的答案,回答为什么 top
输出中的 RES
列显示的内容不同于 docker stats
的原因(我只想引用他的意思):>
Here's the answer of coolljt0725, one of the contributors, answering why a RES
column in top
output shows something different, than docker stats
(I'm just gonna quote him as is):
如果我正确理解,则是从容器的内存cgroup中完全读取docker stats中的内存使用情况,您可以看到该值与从cat/sys/fs/cgroup/memory/docker/665e99f8b760c0300f10d3d9b35b1a5e5fdcf1b7e4a0100969memory.usage_in_bytes,该限制也是创建容器时由-m设置的内存cgroup限制.RES和内存cgroup的统计信息不同,RES没有考虑缓存,但内存cgroup却考虑到了这,这就是为什么docker stats中的MEM USAGE远比top中的RES更重要
If I understand correctly, the memory usage in docker stats is exactly read from containers's memory cgroup, you can see the value is the same with 490270720 which you read from cat /sys/fs/cgroup/memory/docker/665e99f8b760c0300f10d3d9b35b1a5e5fdcf1b7e4a0e27c1b6ff100981d9a69/memory.usage_in_bytes, and the limit is also the memory cgroup limit which is set by -m when you create container. The statistics of RES and memory cgroup are different, the RES does not take caches into account, but the memory cgroup does, that's why MEM USAGE in docker stats is much more than RES in top
此处用户的建议实际上可以帮助您查看实际内存消耗:
What a user suggested here might actually help you to see the real memory consumption:
尝试设置
docker run --memory
的参数,然后检查/sys/fs/cgroup/memory/docker/<container_id>/memory.usage_in_bytes
应该是对的.
Try set the param of
docker run --memory
,then check your/sys/fs/cgroup/memory/docker/<container_id>/memory.usage_in_bytes
It should be right.