Red Hat Training

A Red Hat training course is available for RHEL 8

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 软件包之后)。