cgroup v2 用统一层级管理 CPU、内存、I/O 等控制器,是现代发行版和容器运行时的默认选择。v1 是多层级、按控制器分别挂载,仍存在于老系统和部分混合模式中。
| 维度 | cgroup v1 | cgroup v2 |
|---|---|---|
| 层级 | 每个控制器一棵树 | 单一统一层级 |
| 资源文件 | 控制器各自命名 | 统一 cgroup.controllers/cgroup.subtree_control |
| 内存限制 | memory.limit_in_bytes |
memory.max |
| CPU 配额 | cpu.cfs_quota_us |
cpu.max |
| 统计 | 分散在各控制器 | memory.current、cpu.stat 等统一 |
| 线程模式 | 不统一 | 支持 threaded 子树 |
| 容器支持 | 广泛但复杂 | 新运行时默认 |
stat -fc %T /sys/fs/cgroup
mount | grep cgroup
cat /proc/cgroups
cat /sys/fs/cgroup/cgroup.controllers
cat /sys/fs/cgroup/memory.max
cat /sys/fs/cgroup/cpu.max
cgroup2fs 表示 v2;tmpfs 且多挂载点通常是 v1。systemd-cgtop — cgroup 资源占用systemctl — 查看 unit 的 cgroupdocker / crictl — 容器资源限制