Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
1.2. 子系统、层级、控制组群和任务的关系
任何单一子系统(比如 cpu
)最多可附加到一个层级中。
cpu
子系统永远无法附加到两个不同的层级。
单一层级可附加一个或者多个子系统。
cpu
和 memroy
子系统(或者任意数目的子系统)都可附加到单一层级中,只要每个子系统不再附加到另一个层级即可。
每次在系统中创建新层级时,该系统中的所有任务都是那个层级的默认 cgroup(我们称之为 root cgroup)的初始成员。对于您创建的任何单一层级,该系统中的每个任务都可以是那个层级中唯一一个 cgroup 的成员。单一任务可以是在多个 cgroup 中,只要每个 cgroup 都在不同的层级中即可。只要某个任务成为同一层级中第二个 cgroup 的成员,就会将其从那个层级的第一个 cgroup 中删除。一个任务永远不会同时位于同一层级的不同 cgroup 中。
cpu
和 memory
子系统都附加到名为 cpu_and_mem
的层级中,且 net_cls
子系统是附加到名为 net
的层级中,那么运行的 httpd
进程可以是 cpu_and_mem
中任意 cgroup 的成员,同时也是 net
中任意 cgroup 的成员。
httpd
进程所在 cpu_and_mem
中的 cgroup 可将其 CPU 时间限制为分配给其它进程时间的一半,并将其内存用量限制为最多 1024
MB。另外,net
中的 cgroup 还可将其传输速率限制为 30
MB/秒。
该系统中的任意进程(任务)都将自己分支创建子进程(任务)。该子任务自动成为其父进程所在 cgroup 的成员。然后可根据需要将该子任务移动到不同的 cgroup 中,但开始时它总是继承其父任务的 cgroup(进程术语中称其为“环境”)。
cpu_and_mem
层级中名为 half_cpu_1gb_max
的 cgroup 成员的任务,以及 net
层级中 cgroup trans_rate_30
的成员。当 httpd
进程将其自身分成几个分支时,其子进程会自动成为 half_cpu_1gb_max
cgroup 和 trans_rate_30
cgroup 的成员。它会完全继承其父任务所属的同一 cgroup。