Show Table of Contents
2.8. 将某个进程移动到控制组群中
您还可以运行
cgclassify 命令将进程移动到 cgroup 中:
~]# cgclassify -g cpu,memory:group1 1701cgclassify 的语法为:cgclassify -g subsystems:path_to_cgroup pidlist,其中:
- subsystems 是用逗号分开的子系统列表,或者
*启动与所有可用子系统关联的层级中的进程。请注意:如果在多个层级中有同名的 cgroup,则-g选项会将该进程移动到每个组群中。请确定在拥有您在此指定子系统的每个层级中都有该 cgroup。 - path_to_cgroup 是到其层级中的 cgroup 的路径
- pidlist 是用空格分开的进程识别符(PID)列表
您还可以在 pid 前面添加
-- sticky 选项以保证所有子进程位于同一 cgroup 中。如果您没有设定这个选项且 cgred 守护进程正在运行,则会根据 /etc/cgrules.conf 中的设置将子进程分配到 cgroup 中。该进程本身则仍保留在启动它的 cgroup 中。
使用
cgclassify,您可以同时移动多个进程。例如:这个命令将 PID 为 1701 和 1138 的进程移动到 cgroup 中的 group1/:
~]# cgclassify -g cpu,memory:group1 1701 1138
请注意要移动的 PID 间要用空格分开,且应该在不同的层级中指定这些组群。
备用方法
要将进程直接移动到 cgroup 中,请将其 PID 写入该 cgroup 中的
tasks 文件中。例如:要将 PID 为 1701 的进程移动到位于 /cgroup/lab1/group1/ 的 cgroup 中:
~]# echo 1701 > /cgroup/lab1/group1/tasks2.8.1. cgred 守护进程
Cgred 是一个守护进程,它可根据在
/etc/cgrules.conf 文件中设定的参数将任务移动到 cgroup 中。/etc/cgrules.conf 文件中的条目可以使用以下两个格式之一:
- user hierarchies control_group
- user:command hierarchies control_group
例如:
maria devices /usergroup/staff
这个条目指定任何属于名为
maria 用户的进程根据在 /usergroup/staff cgroup 中指定的参数访问设备子系统。要将具体命令与具体 cgroup 关联,请添加 command 参数,如下:
maria:ftp devices /usergroup/staff/ftp
该条目现在指定何时名为
maria 的用户使用 ftp 命令,自动将该进程移动到包含 devices 子系统的层级中的 /usergroup/staff/ftp cgroup 中。请注意:该守护进程只有在符合适当的条件后才可将该进程移动到该 cgroup 中。因此,ftp 可能会在错误的组群中短暂运行。再有,如果该进程在错误组群中迅速生出子进程,则不会移动这些子进程。
/etc/cgrules.conf 文件中的条目可包括以下额外符号:
@- 当在 user 使用前缀时,代表是一个组群而不是单独用户。例如:@admins是admins组群中的所有用户。*- 代表“所有”。例如:subsystem字段中的*代表所有子系统。%- 代表与以上行中项目相同的项目。例如:@adminstaff devices /admingroup @labstaff % %

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.