Menu Close
第 17 章 了解 cgroups
您可以使用 控制组 (cgroup
) 内核功能来设置限值、排列优先级或隔离进程的硬件资源。这样,您可以精细地控制应用的资源使用,从而更有效地使用它们。
17.1. 了解控制组群
控制组 是一种 Linux 内核功能,可让您将进程分级组织为分层组 - cgroups
。层次结构(控制组树)通过为 cgroup
虚拟文件系统提供结构来定义,该结构默认挂载到 /sys/fs/cgroup/
目录。systemd
系统和服务管理器利用 cgroups
来组织它管理的所有单元和服务。另外,您可以通过在 /sys/fs/cgroup/
目录中创建和删除子目录来手动管理 cgroups
层次结构。
资源控制器(内核组件)随后通过限制、排列或分配系统资源(如 CPU 时间、内存、网络带宽或各种组合)来修改 cgroup
中进程的行为。
cgroups
的增值值是流程聚合,允许在应用程序和用户之间划分硬件资源。因此可以提高总体的效率、稳定性以及用户环境的安全。
- 控制组群版本 1
控制组版本 1 (
cgroups-v1
) 提供按资源控制器层次结构。这意味着,每个资源(如 CPU、内存、I/O 等)都有自己的控制组层次结构。可以组合不同的控制组层次结构,从而使一个控制器可以在管理各自资源时相互协调。但是,这两个控制器可能属于不同的进程层次结构,不允许它们进行适当的协调。cgroups-v1
控制器在很长的时间跨度开发,因此其控制文件的行为和命名不一致。- 控制组群版本 2
源自层次结构灵活性的控制器协调问题导致了控制组版本 2 的开发。
控制组版本 2 (
cgroups-v2
)提供单一控制组层次结构,用于挂载所有资源控制器。控制文件行为和命名在不同控制器之间保持一致。
默认情况下,RHEL 9 挂载并使用 cgroups-v2
。
这个子部分基于 Devconf.cz 2019 演示。[1]
其他资源
- 什么是内核资源控制器
-
cgroups(7)
手册页 - cgroups-v1
- cgroups-v2