2.5. 创建控制组群
请使用
cgcreate
命令创建 cgroup。cgcreate
的语法为:cgcreate -t
uid:gid -a
uid:gid -g subsystems:path
,其中:
-t
(可选)- 指定用户(使用用户 ID,uid)和组群(使用组群 ID,gid)以便让这个 cgroup 拥有tasks
伪文件。这个用户可在该 cgroup 中添加任务。注意
请注意:从 cgroup 中删除任务的唯一方法是将其移动到不同的 cgroup中。要移动任务,该用户必须有目的 cgroup 的写访问。对源 cgroup 的写访问并不重要。-a
(可选)- 指定用户(使用用户 ID,uid)和组群(使用组群 ID,gid)以便这个 cgroup 拥有tasks
外的所有伪文件。这个用户可修改这个 cgroup 中的任务对系统资源的访问。-g
-- 指定在其中创建 cgroup 的层级,格式为与那些层级关联的用逗号分开的 subsystems 列表。如果这个列表中的子系统在不同的层级中,则要在每个层级中都创建该组群。层级列表后是一个冒号,然后是与该层级有关的子组群 path。不要在该 path 中包含层级挂载点。例如:目录/cgroup/cpu_and_mem/lab1/
中的 cgroup 称为lab1
-- 其路径已唯一确定,因为对于给定的子系统最多有一个层级。还请注意该组群可由创建该 cgroup 的现有层级中的所有子系统控制,即使没有在cgcreate
命令中指定这些子系统 -- 请参考 例 2.5 “cgcreate 用法”。
因为同一层级中的所有 cgroup 有相同的控制器,该子组群与其父 cgroup 有相同的控制器。
例 2.5. cgcreate 用法
请考虑在
cpu_and_mem
层级中一同挂载 cpu
和 memory
子系统的系统,并将 net_cls
控制器挂载到名为 net
的另一个层级中。我们现在运行:
~]# cgcreate -g cpu,net_cls:/test-subgroup
cgcreate
命令创建两个组群,名为 test-subgroup
,一个位于 cpu_and_mem
层级,一个位于 net
层级。cpu_and_mem
层级中的 test-subgroup
组群由 memory
子系统控制,即使在 cgcreate
命令中没有指定它也是如此。
备用方法
请使用
mkdir
命令直接创建 cgroup 的子组群:
~]# mkdir /cgroup/hierarchy/name/child_name
例如:
~]# mkdir /cgroup/cpuset/lab1/group1