cgroup v2中的RSS内存等效物是什么?

4
我正在尝试编写一个脚本,报告Docker容器的内存消耗。我发现可以通过读取cgroup文件来获取这些值。
我感兴趣的指标之一是cgroup v1中的RSS内存(memory.rss)。然而,我发现它在cgroup v2中并不直接可用,而我的容器正在使用该版本。
我对内核内存类型不是很熟悉。在cgroup v1中,memory.rss被定义为“匿名和交换缓存内存字节数(包括透明大页面)”。在cgroup v2中,我认为它等于以下内容的总和:
  • anon(在匿名映射(如brk(),sbrk()和mmap(MAP_ANONYMOUS)中使用的内存量)
  • shmem(缓存的文件系统数据的数量,这些数据是与交换空间相关的,例如tmpfs,shm段,共享匿名mmap())
我是正确的吗?还是我错过了什么?
1个回答

0

/sys/fs/cgroup/memory.current 是使用 cgroup v2 的容器中与 RSS 相当的指标。该路径可用于在容器内部读取容器的内存消耗。

memory.current 包括 cgroup 的所有常驻页面 - 匿名映射、文件等等。而 memory.stat 则将 memory.current 拆分为 cgroup 使用的不同内存类型。

如果您想在容器外部监控 RSS,那么在根命名空间中容器的 cgroup 路径可能会因 cgroup 驱动程序而异。

/sys/fs/cgroup/docker/<longid>/ with cgroupfs driver
/sys/fs/cgroup/system.slice/docker-<longid>.scope/ with systemd driver
/sys/fs/cgroup/<parent-cgroup>.slice/docker-<longid>.scope/ with systemd driver with `--parent-cgroup` option

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接