Show Table of Contents
第 1 章 控制组群(Cgroup)简介
Red Hat Enterprise Linux 6 提供新的内核功能:控制族群(control group),本手册中使用其简称 cgroup。Cgroup 可让您为系统中所运行任务(进程)的用户定义组群分配资源 -- 比如 CPU 时间、系统内存、网络带宽或者这些资源的组合。您可以监控您配置的 cgroup,拒绝 cgroup 访问某些资源,甚至在运行的系统中动态配置您的 cgroup。可将
cgconfig(“控制组群配置 ”)服务配置为在引导时启动,并重新建立您预先定义的 cgroup,这样可使其在重启过程中保留它们。
使用 cgroup,系统管理员可更具体地控制对系统资源的分配、优先顺序、拒绝、管理和监控。可更好地根据任务和用户分配硬件资源,提高总体效率。
1.1. 如何管理控制组群
Cgroup 是分层管理的,类似进程,且子 cgroup 会继承其上级 cgroup 的一些属性。但这两个模式也有不同。
Linux 进程模式
Linux 系统中的所有进程都是通用父进程
init 的子进程,该进程在引导时由内核执行并启动其它进程(这些进程会按顺序启动其子进程)。因为所有进程都归结到一个父进程,所以 Linux 进程模式是一个单一层级结构,或者树结构。
另外,
init 之外的每个 Linux 进程都会继承其父进程的环境(比如 PATH 变量)[1]和某些属性(比如打开文件描述符)。
Cgroup 模式
Cgroup 与进程在以下方面类似:
- 它们是分级的,且
- 子 cgroup 会继承父 cgroup 的某些属性。
根本的不同是在某个系统中可同时存在不同的分级 cgroup。如果 Linux 进程模式是进程的单一树模式,那么 cgroup 模式是一个或者更多任务的独立、未连接树(例如:进程)。
需要多个独立 cgroup 分级,因为每个分级都会附加到一个或者多个子系统中。子系统[2]代表单一资源,比如 CPU 时间或者内存。Red Hat Enterprise Linux 6 提供 9 个 cgroup 子系统,根据名称和功能列出如下。
Red Hat Enterprise Linux 中的可用子系统
blkio-- 这个子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB 等等)。cpu-- 这个子系统使用调度程序提供对 CPU 的 cgroup 任务访问。cpuacct-- 这个子系统自动生成 cgroup 中任务所使用的 CPU 报告。cpuset-- 这个子系统为 cgroup 中的任务分配独立 CPU(在多核系统)和内存节点。devices-- 这个子系统可允许或者拒绝 cgroup 中的任务访问设备。freezer-- 这个子系统挂起或者恢复 cgroup 中的任务。memory-- 这个子系统设定 cgroup 中任务使用的内存限制,并自动生成由那些任务使用的内存资源报告。net_cls-- 这个子系统使用等级识别符(classid)标记网络数据包,可允许 Linux 流量控制程序(tc)识别从具体 cgroup 中生成的数据包。ns-- 名称空间子系统。
注意
您可能在 cgroup 文献,比如 man page 或者内核文档中看到术语资源控制器或者控制器。这两个词与 “subsystem(子系统)”的含义相同,且基于这样的事实,即子系统通常调度资源或者在其所附属层级的 cgroup 中应用限制。
子系统(资源控制器)的定义非常普通:它是根据一组任务行动的东西,例如进程。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.