Cgroup v2 and Page cache

Cgroup v2 and Page Cache

cgroup子系统是进行公平分配和限制系统资源的方式.它通过树形结构组织所有的数据,叶子节点
依赖父节点并继承它们的设置.另外,cgroup提供很多资源的计数和统计.

cgroup控制无处不在.即使你没有显式的使用它们,它们在现代Linux发行版中也是默认打开并与systemd集成在一起.

概览

cgroup对理解page cache使用中有重要的意义.它还帮助调试问题和配置软件有更好的状态.
比如,通过cgroup内存限制可以对lru的长度和驱逐进行控制.

cgroup v2中有一个v1中没有的重要主题,就是可以跟踪page cache的io回写.
v1无法理解生成disk IOPS的group,这样就不能正确的追踪和限制disk操作.
幸运地是,v2版本修复了这些问题,它已经提供了一些新特性可以帮助控制page cache回写.

找出所有groups和它们限制的方法是查看/sys/fs/cgroup.但是你可以使用更简单的方法:

systemd-cglssystemd-top

Memory cgroup files

现在,让我们从page cache的角度来回顾cgroup中的最重要部分.

    1. memory.current:展示cgroup和其后代当前使用的总内存,当然包括page cache的大小
    1. memory.stat:显示许多内存计数,最重要的一些信息可以通过file来过滤.
    1. memory.numa_stat:显示每个NUMA节点的状态
    1. memory.min, memory.low, memory.high, memory.max-cgroup限制. cgroup v2文档