cgroup 的 memory.stat 文件中列出的页面缓存使用情况

cgroup 的 memory.stat 文件中列出的页面缓存使用情况

cgroup 的 memory.stat 文件列出了该 cgroup 的页面缓存使用情况(在 cache 和 total_cache 字段中)。页面缓存使用情况是如何得出的?

例如,文件 a.txt 由 cgroup A 和 B 打开。A 和 B 是否都维护 a.txt 的各自缓存?还是 a.txt 的缓存在 A 和 B 之间共享?如果是共享的,memory.stat 对 A 和 B 的页面缓存使用量是否会增加相同的量(总量)?

另外,为什么 memory.stat 不包含缓冲区缓存或交换缓存的字段?

发行版是 Linux Mint 18.2。

答案1

2.3 节讨论了这一点https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt...

2.3 共享页面统计

共享页面的计费基于首次接触方法。首次接触页面的 cgroup 将负责该页面。此方法背后的原理是,积极使用共享页面的 cgroup 最终将为此付费(一旦从引入它的 cgroup 中取消了该页面的计费 - 这将在内存压力下发生)。

至于其他问题...

从 Linux 2.4 开始,缓冲区被添加到缓存中(参见https://stackoverflow.com/a/14671569)因此,您不会在memory.stat中找到单独的缓冲区字段。

为了使 swap 列在 memory.stat 中,内核可能需要使用 CONFIG_MEMCG_SWAP_ENABLED 进行编译。

相关内容