26.2. 内核资源控制器简介
内核资源控制器启用控制组的功能。RHEL 9 支持适用于控制组版本 1 (cgroups-v1) and 控制组版本 2 (cgroups-v2) 的不同控制器。
资源控制器也称为控制组子系统,是一个代表单一资源的内核子系统,如 CPU 时间、内存、网络带宽或磁盘 I/O。Linux 内核提供由 systemd 服务管理器自动挂载的一系列资源控制器。您可以在 /proc/cgroups 文件中找到当前挂载的资源控制器的列表。
cgroups-v1 提供的控制器:
blkio- 设置对块设备的输入/输出访问的限制。
cpu-
调整控制组任务的完全公平调度程序(CFS)的参数。
cpu控制器与cpuacct控制器一起挂载在同一挂载上。 cpuacct-
创建控制组群中任务所使用的有关 CPU 资源的自动报告。
cpuacct控制器与cpu控制器一起挂载在同一挂载上。 cpuset- 将控制组任务限制为仅在指定 CPU 子集上运行,并指示任务仅使用指定内存节点上的内存。
devices- 控制控制组群中任务对设备的访问。
freezer- 暂停或恢复控制组中的任务。
内存- 设置控制组中任务对内存使用的限制,并对这些任务使用的内存资源生成自动报告。
net_cls-
使用类标识符(
classid)标记网络数据包,使 Linux 流量控制器(tc命令)能够识别来自特定控制组任务的数据包。net_cls子系统net_filter(iptables) 也可使用此标签对此类数据包执行操作。net_filter使用防火墙标识符(fwid)标记网络套接字,它允许 Linux 防火墙识别来自特定控制组任务的数据包(通过使用iptables命令)。 net_prio- 设置网络流量的优先级。
pids- 为控制组群中的多个进程及其子进程设置限制。
perf_event-
通过
perf性能监控和报告工具对监控的任务进行分组。 rdma- 对控制组群中远程直接内存访问/InfiniBand 特定资源设置限制。
hugetlb- 按控制组群中的任务限制大型虚拟内存页的使用。
cgroups-v2 提供的控制器:
io- 设置对块设备的输入/输出访问的限制。
内存- 设置控制组中任务对内存使用的限制,并对这些任务使用的内存资源生成自动报告。
pids- 为控制组群中的多个进程及其子进程设置限制。
rdma- 对控制组群中远程直接内存访问/InfiniBand 特定资源设置限制。
cpu- 为控制组的任务调整完全公平调度程序(CFS)的参数,并创建控制组中任务所使用的 CPU 资源的自动报告。
cpuset-
将控制组任务限制为仅在指定 CPU 子集上运行,并指示任务仅使用指定内存节点上的内存。仅支持具有新分区功能的核心功能(
cpus{,.effective},mems{,.effective})。 perf_event-
通过
perf性能监控和报告工具对监控的任务进行分组。perf_event自动在 v2 层次结构上启用。
重要
资源控制器可以在 cgroups-v1 层次结构或 cgroups-v2 层次结构中使用,不能同时在两者中使用。