What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Control groups, or cgroups, are a Linux kernel mechanism for organizing processes into a hierarchy and managing or accounting for their use of system resources. Controllers apply resource-specific rules—such as CPU or memory controls—through that hierarchy, so limits set by a parent also constrain its descendants. On systemd-managed systems, systemd configures and manages the kernel’s cgroup tree through units such as services and slices.

What are cgroups?

A cgroup is a group of processes represented within a hierarchy. The kernel’s cgroup core organizes processes; resource controllers provide controls and accounting for particular resources. The kernel describes cgroups as a way to organize processes hierarchically and distribute system resources “in a controlled and configurable manner” (Linux kernel cgroup v2 documentation).

Think of the hierarchy as a tree. A parent cgroup can set resource policies that apply to its children and their processes. A child can further constrain its own workload, but it cannot undo a restriction imposed by an ancestor. This lets administrators group workloads at several levels—for example, an overall service group with separate child groups for components—while keeping resource management organized.

Cgroups can limit and account for resources such as CPU and memory; the cgroups(7) manual also describes freezing and resuming processes among their uses (Linux man-pages, cgroups(7), GNU/Linux Programmer’s Manual 6.17, dated 2026-02-08). They are a resource-management mechanism, not a complete security boundary or a substitute for other forms of process isolation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Why cgroups matter for services and workloads

Without grouping, it is harder to apply resource policy consistently to related processes or to see resource use by workload. Cgroups provide a structure for assigning processes to groups and applying controller-specific controls at appropriate levels. A service manager can use that structure to manage a service as a unit, while administrators can arrange larger groups and subgroups according to how workloads are operated.

The practical controls depend on the kernel, the active hierarchy, and the software managing it. Cgroups are not one fixed set of knobs that is identical on every Linux host.

How cgroup v1 and v2 differ

Aspect cgroup v1 cgroup v2
Hierarchy Uses multiple controller hierarchies; controller organization is not necessarily unified. Uses one unified hierarchy for controllers.
Controller availability Has a controller set that differs from v2. Implements a subset of the controllers available in v1; the usable set depends on kernel support and hierarchy configuration.
Configuration model Uses controller-specific hierarchies and their associated files. Uses a unified hierarchy with controller availability and enabling managed through files such as cgroup.controllers and cgroup.subtree_control.
Compatibility Remains relevant for compatibility. Designed to replace v1, but v1 remains in use; both versions can be mounted on the same system, according to cgroups(7).

The Linux man-pages record that the initial cgroups implementation was released in Linux 2.6.24, work on v2 began in Linux 3.10, and v2 became official with Linux 4.5. These are development milestones, not a guide to the default hierarchy on a current distribution. Check the target host rather than inferring its configuration from those dates (Linux man-pages, cgroups(7), 2026-02-08).

How cgroup v2 controllers are enabled

In v2, the kernel exposes controllers supported by the running kernel and not attached to v1 in the cgroup.controllers file. Controllers are not automatically enabled for a parent’s children: the parent enables available controllers through cgroup.subtree_control. This top-down rule means a controller must be available and enabled at the relevant parent level before it can be used lower in the tree.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

There is also a structural constraint for domain controllers: a non-root domain cgroup generally must have no processes of its own before it can distribute domain resources to child cgroups. In practice, setup may therefore require creating child cgroups and moving processes into them before enabling those controllers in the parent. Exact behavior and controller availability depend on the active kernel and hierarchy; consult the kernel’s cgroup v2 documentation for the applicable interface details.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How systemd uses cgroups

Cgroups are a kernel mechanism; systemd is one management layer that uses them. On systemd-managed systems, systemd PID 1 manages the main cgroup tree and organizes units such as services, slices, and scopes within it. Administrators commonly set resource policy through systemd unit properties rather than directly changing files that systemd manages.

For example, the systemd.resource-control(5) manual documents CPUWeight= as mapping to the unified hierarchy’s cpu.weight. That manual gives a range of 1 to 10000 and a kernel default weight of 100. This is an example from the documented systemd interface; exact options and behavior should be checked against the systemd version and configuration on the host (systemd.resource-control(5)).

Systemd’s interface guidance calls for a single writer for each cgroup. A service that needs to create and manage subgroups should explicitly request delegation with Delegate=yes, rather than competing with systemd to manage the same part of the tree. Delegation hands control of a subtree to a service; it does not let that service escape limits imposed by ancestors. See systemd’s guidance on the new control group interfaces.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
Sale
UNIX and Linux System Administration Handbook, 4th Edition
  • New
  • Mint Condition
  • Dispatch same day for order received before 12 noon
  • Guaranteed packaging
  • No quibbles returns

What to check on a Linux host

  • Identify whether the host uses cgroup v1, v2, or a configuration involving both; do not assume all distributions or installations use the same mode.
  • On a v2 hierarchy, inspect cgroup.controllers to see which controllers are available at that point in the tree.
  • Check the manager responsible for the hierarchy. On systemd hosts, use systemd’s unit-level resource controls for systemd-managed cgroups.
  • Before enabling v2 controllers for child groups, account for top-down controller enabling and the requirement that non-root domain cgroups generally have no processes of their own.
  • If a service must manage child cgroups on a systemd host, configure delegation explicitly and respect the parent’s resource controls.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.