15.2. 内核资源控制器简介

内核资源控制器启用控制组的功能。RHEL 9 支持适用于控制组版本 1 (cgroups-v1) and 控制组版本 2 (cgroups-v2) 的不同控制器。

资源控制器也称为控制组子系统,是一个代表单一资源的内核子系统,如 CPU 时间、内存、网络带宽或磁盘 I/O。Linux 内核提供由 systemd 服务管理器自动挂载的一系列资源控制器。您可以在 /proc/cgroups 文件中找到当前挂载的资源控制器的列表。

表 15.1. 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

可用于限制控制组中任务对大量虚拟内存页面的使用。

表 15.2. 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 包后)的文档。