26.2. Introducing kernel resource controllers
Kernel resource controllers enable the functionality of control groups. RHEL 10 supports various controllers for control groups version 1 (cgroups-v1) and control groups version 2 (cgroups-v2).
A resource controller, also called a control group subsystem, is a kernel subsystem that represents a single resource, such as CPU time, memory, network bandwidth or disk I/O. The Linux kernel provides a range of resource controllers that are mounted automatically by the systemd service manager.
You can find a list of the currently mounted resource controllers in the /proc/cgroups file.
- Controllers available for
cgroups-v1 -
blkio: Sets limits on input/output access to and from block devices. -
cpu: Adjusts the parameters of the default scheduler for a control group’s tasks. Thecpucontroller is mounted together with thecpuacctcontroller on the same mount. -
cpuacct: Creates automatic reports on CPU resources used by tasks in a control group. Thecpuacctcontroller is mounted together with thecpucontroller on the same mount. -
cpuset:Restricts control group tasks to run only on a specified subset of CPUs and to direct the tasks to use memory only on specified memory nodes. -
devices: Controls access to devices for tasks in a control group. -
freezer: Suspends or resumes tasks in a control group. -
memory: Sets limits on memory use by tasks in a control group and generates automatic reports on memory resources used by those tasks. -
net_cls: Tags network packets with a class identifier (classid) that enables the Linux traffic controller (thetccommand) to identify packets that originate from a particular control group task. A subsystem ofnet_cls, thenet_filter(iptables), can also use this tag to perform actions on such packets. -
net_filter: Tags network sockets with a firewall identifier (fwid) that allows the Linux firewall to identify packets that originate from a particular control group task (by using theiptablescommand). -
net_prio: Sets the priority of network traffic. -
pids: Sets limits for multiple processes and their children in a control group. -
perf_event: Groups tasks for monitoring by theperfperformance monitoring and reporting utility. -
rdma: Sets limits on Remote Direct Memory Access/InfiniBand specific resources in a control group. -
hugetlb: Limits the usage of large size virtual memory pages by tasks in a control group.
-
- Controllers available for
cgroups-v2 -
io: Sets limits on input/output access to and from block devices. -
memory: Sets limits on memory use by tasks in a control group and generates automatic reports on memory resources used by those tasks. -
pids: Sets limits for multiple processes and their children in a control group. -
rdma: Sets limits on Remote Direct Memory Access/InfiniBand specific resources in a control group. -
cpu: Adjusts the parameters of the default scheduler for a control group’s tasks and creates automatic reports on CPU resources used by tasks in a control group. -
cpuset: Restricts control group tasks to run only on a specified subset of CPUs and to direct the tasks to use memory only on specified memory nodes. Supports only the core functionality (cpus{,.effective},mems{,.effective}) with a new partition feature. -
perf_event: Groups tasks for monitoring by theperfperformance monitoring and reporting utility.perf_eventis enabled automatically on the v2 hierarchy.
-
A resource controller can be used either in a cgroups-v1 hierarchy or a cgroups-v2 hierarchy, not simultaneously in both.