Skip to content
Search RunEntLinux

Searches general documentation on RunEntLinux. Each distribution has its own documentation search.

    Browse this documentation

    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.

    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.

    ItemEL 8EL 9
    Default hierarchyhybrid (v1 + v2 coexisting)pure v2 (unified)
    Mount pointsseveral v1 hierarchies + /sys/fs/cgroup/unified/sys/fs/cgroup (cgroup2fs)
    Rootless container limitslimitedfully supported
    v1 paths (e.g. …/memory/memory.limit_in_bytes)presentabsent
    • 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-property are 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=0 temporarily returns to hybrid, but treat it as a transition measure only.
    Confirm the current cgroup hierarchy type
    stat -fc %T /sys/fs/cgroup # cgroup2fs = v2
    mount | grep cgroup
    Read a service's resource view (v2 path)
    cat /sys/fs/cgroup/system.slice/sshd.service/memory.current