Menu Close

17.2. 什么是内核资源控制器

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

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

cgroups-v1 有以下控制器可用:

  • blkio - 可以设置块设备对输入/输出访问的限制。
  • CPU - 调整完全公平调度程序 (CFS) 调度程序的参数,以用于控制组的任务。它与 cpuacct 控制器一起挂载在同一挂载上。
  • cpuacct - 创建控制组中任务使用的 CPU 资源自动报告。它与 cpu 控制器一起挂载在同一挂载上。
  • cpuset - 可用于将控制组任务限制为仅在指定 CPU 子集上运行,并指示任务仅在指定内存节点上使用内存。
  • devices - 可以为控制组中的任务控制对设备的访问。
  • freezer - 可用于暂停或恢复控制组中的任务。
  • memory - 可用于设置控制组中任务的内存使用限值,并对这些任务使用的内存资源生成自动报告。
  • 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 - cgroups-v1blkio 的后续。
  • memory - cgroups-v1memory 的后续.
  • pids - 与 cgroups-v1 中的 pids 相同。
  • rdma - cgroups-v1 中的 相同.
  • cpu - cgroups-v1cpucpuacct 的后续。
  • cpuset - 仅支持带有新分区功能的核心功能 (cpus{,.effective}, mems{,.effective}),带有一个新的分区特性。
  • perf_event - 支持是继承的,没有显式控制文件。您可以将 v2 cgroup 指定为 perf 命令的参数,以分析该 cgroup 中的所有任务。
重要

资源控制器可以在 cgroups-v1 层次结构或 cgroups-v2 层次结构中使用,不能同时在两者中使用。

其他资源

  • cgroups(7) 手册页
  • /usr/share/doc/kernel-doc-<kernel_version>/Documentation/cgroups-v1/ 目录(安装 kernel-doc 包后)的文档。