Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

3.5. 设定 cgroup 参数

如要修改控制群组参数,您可以编写 /etc/cgconfig.conf 或者使用 cgset 指令。 重启后,对 /etc/cgconfig.conf 的更改也将保留并运行,但是cgset 仅能对当前会话的 cgroup 参数做出修改。

修改 /etc/cgconfig.conf

您可以在 /etc/cgconfig.confGroups 部分设定管控器参数。 组条目使用以下句法定义:
group name {
[permissions]
    controller {
        param_name = param_value;
        …
    }
    …
}
请用您 cgroup 的名字替代 namecontroller 代表您希望修改的管控器名称。这应当是一个您自己挂载的管控器,而不是 systemd 自动挂载的默认管控器。用您希望更改的管控器参数和其新数值替代 param_nameparam_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 的路径,相对层级的根群组。