第 1 章 控制群组简介

1.1. 什么是控制群组

控制群组(control group)(在此指南中简写为 cgroup)是 Linux kernel 的一项功能:在一个系统中运行的层级制进程组,您可对其进行资源分配(如 CPU 时间、系统内存、网络带宽或者这些资源的组合)。通过使用 cgroup,系统管理员在分配、排序、拒绝、管理和监控系统资源等方面,可以进行精细化控制。硬件资源可以在应用程序和用户间智能分配,从而增加整体效率。
控制群组可对进程进行层级式分组并标记,并对其可用资源进行限制。传统情况下,所有的进程分得的系统资源数量相近,管理员用进程 niceness 值进行调节。而用此方法,包含大量进程的应用程序可以比包含少量进程的应用程序获得更多资源,这与应用程序的重要程度无关。
通过将 cgroup 层级系统与 systemd 单位树捆绑,Red Hat Enterprise Linux 7 可以把资源管理设置从进程级别移至应用程序级别。因此,您可以使用 systemctl 指令,或者通过修改 systemd 单位文件来管理系统资源。详情请参阅〈第 2 章 使用控制群组〉。
在 Red Hat Enterprise Linux 之前的版本中,系统管理员使用 libcgroup 软件包中的 cgconfig 指令来建立自定义 cgroup 层级。但现在,这个软件包已经过时也不被推荐使用,因为它很容易与默认的 cgroup 层级产生冲突。然而,在一些特定情况下,libcgroup 仍然可用,如 systemd 不可用时,或使用 net-prio 子系统时。详情请参考〈第 3 章 使用 libcgroup 工具〉。
上述工具提供了高阶接口,用与 Linux kernel 中的 cgroup 管控器(也称为子系统)互动。用于资源管理的主要 cgroup 管控器是 cpumemoryblkio。如需参考默认情况下被激活的管控器列表,请参阅〈Red Hat Enterprise Linux 7 中可用的管控器〉;如需参考资源管控器详述及可配置参数,请参阅〈kernel 管控器专项介绍〉。