3.5. 设定 cgroup 参数
如要修改控制群组参数,您可以编写
/etc/cgconfig.conf
或者使用 cgset
指令。 重启后,对 /etc/cgconfig.conf
的更改也将保留并运行,但是cgset
仅能对当前会话的 cgroup 参数做出修改。
修改 /etc/cgconfig.conf
您可以在
/etc/cgconfig.conf
的 Groups 部分设定管控器参数。 组条目使用以下句法定义:
group name {
[permissions]
controller {
param_name = param_value;
…
}
…
}
请用您 cgroup 的名字替代 name, controller 代表您希望修改的管控器名称。这应当是一个您自己挂载的管控器,而不是 systemd 自动挂载的默认管控器。用您希望更改的管控器参数和其新数值替代 param_name 和 param_value。请注意,
permissions
部分是可选择项。如要给组条目定义权限,请使用以下句法:
perm { task { uid = task_user; gid = task_group; } admin { uid = admin_name; gid = admin_group; } }
注意
请重启
cgconfig
服务,让 /etc/cgconfig.conf
的更改生效。重启此服务会重建配置文件中指定的层级,但并不会影响所有挂载层级。您可以通过执行 systemctl restart
指令来重启服务,但是,建议您先停止 cgconfig
:
~]# systemctl stop cgconfig
然后打开并编写配置文件。保存更改后,您可以用以下指令再次启动
cgconfig
:
~]# systemctl start cgconfig
使用 cgset 指令
获得修改相关 cgroup 的权限后,请运行用户账户中的
cgset
指令来设定管控器参数。请仅对手动挂载的管控器使用此指令。
cgset
的句法为:
cgset
-r
parameter=value path_to_cgroup
其中:
- parameter 是要设定的参数,它与给定 cgroup 目录中的文件对应;
- value 是参数值;
- path_to_cgroup 是“与层级的根相对”的 cgroup 路径。
cgset
设定的值可能会受限于一个特定层级所设定的更高值。例如,在一个系统中,如果 group1
被限定仅可使用 CPU 0,那您就不能设定 group1/subgroup1
使用 CPU 0 和 1,或者仅使用 CPU 1。
您也可以使用
cgset
将一个 cgroup 的参数复制到另一个已有 cgroup 中。使用 cgset
复制参数的句法是:
cgset
--copy-from
path_to_source_cgroup path_to_target_cgroup
其中:
- path_to_source_cgroup 是要复制其参数的 cgroup 路径,相对层级的根群组;
- path_to_target_cgroup 是目标 cgroup 的路径,相对层级的根群组。