23.2. 内核资源控制器简介
内核资源控制器启用控制组的功能。RHEL 8 支持 控制组群版本 1 (cgroups-v1
)和 控制组版本 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
层次结构中使用,不能同时在两者中使用。
其它资源
-
cgroups (7)
手册页 -
/usr/share/doc/kernel-doc-<kernel_version>/Documentation/cgroups-v1/
目录中的文档(安装kernel-doc
软件包之后)。