EL 9: cgroup v2 by default
EL 9 switches the default control-group hierarchy to cgroup v2 (the unified hierarchy, mounted as cgroup2fs). For container users this means rootless Podman finally gets full CPU/memory limits; for operators it means every monitoring or agent tool that hardcodes v1 paths like /sys/fs/cgroup/memory/… needs adapting.
What changed
Section titled “What changed”cgroup v1 split controllers across multiple hierarchies (/sys/fs/cgroup/cpu, /sys/fs/cgroup/memory, …), so one process lived at different paths under different controllers — confusing semantics with real race conditions. cgroup v2 replaces that with a single unified hierarchy:
- one tree, one node per process group, all controllers (cpu, memory, io, pids) configured at the same node;
- a safer delegation model: unprivileged users can be handed a subtree safely — the prerequisite for rootless container resource limits;
- new PSI (Pressure Stall Information) metrics, now the data source for a generation of scheduling and autoscaling tools.
EL 8 already offered v2 but defaulted to hybrid mode; EL 9 makes pure v2 the default.
EL 8 vs EL 9
Section titled “EL 8 vs EL 9”| Item | EL 8 | EL 9 |
|---|---|---|
| Default hierarchy | hybrid (v1 + v2 coexisting) | pure v2 (unified) |
| Mount points | several v1 hierarchies + /sys/fs/cgroup/unified | /sys/fs/cgroup (cgroup2fs) |
| Rootless container limits | limited | fully supported |
v1 paths (e.g. …/memory/memory.limit_in_bytes) | present | absent |
What it means for you
Section titled “What it means for you”- Monitoring, security agents, old container runtimes: tools reading v1 paths or expecting the v1 layout get empty data or errors; upgrade to versions that support cgroup v2.
- systemd services and slices: interfaces like
systemctl set-propertyare unchanged, but the underlying location moves to the unified hierarchy; hand-rolled cgroup scripts need rewriting. - Containers: Podman 4 on v2 gains more accurate memory accounting and OOM handling; limits in rootless scenarios (
podman run --memory …) actually take effect. - Fallback: the kernel parameter
systemd.unified_cgroup_hierarchy=0temporarily returns to hybrid, but treat it as a transition measure only.
How to check
Section titled “How to check”stat -fc %T /sys/fs/cgroup # cgroup2fs = v2mount | grep cgroupcat /sys/fs/cgroup/system.slice/sshd.service/memory.currentFurther reading
Section titled “Further reading”- Podman basics — rootless containers and resource limits in practice
- EL 9: A new toolchain — kernel and toolchain changes in the same release
- EL 8: nftables replaces iptables — the previous generation’s default-backend switch