2.7. 设置参数
在可修改相关的 cgroup 的用户帐户中运行
cgset 命令设定子系统参数。例如:如果有 /cgroup/cpuset/group1,则请使用以下命令指定这个组群可访问的 CPU:
cpuset]# cgset -r cpuset.cpus=0-1 group1
cpuset]# cgset -r cpuset.cpus=0-1 group1
cgset 的语法为:cgset -r parameter=value path_to_cgroup ,其中:
- parameter 是要设定的参数,该参数与给定 cgroup 的目录中的文件对应。
- value 是为参数设定的值
- path_to_cgroup 是到相对该层级 root 的 cgroup 路径。例如:如果设定 root 组群的参数(如有
/cgroup/cpuacct/文件),请运行:cpuacct]# cgset -r cpuacct.usage=0 /
cpuacct]# cgset -r cpuacct.usage=0 /Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,因为.与 root 组群相关(即 root 组群本身),您还可运行:cpuacct]# cgset -r cpuacct.usage=0 .
cpuacct]# cgset -r cpuacct.usage=0 .Copy to Clipboard Copied! Toggle word wrap Toggle overflow 备注:/是首选语法。注意
只能为该 root 组群设定少量参数(比如上面的示例中演示的cpuacct.usage参数)。这是因为 root 组群拥有所有现有资源,因此定义某些参数限制现有进程就没有任何意义,例如cpuset.cpu参数。要设定 root 组群的子组群group1参数,请运行:cpuacct]# cgset -r cpuacct.usage=0 group1
cpuacct]# cgset -r cpuacct.usage=0 group1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该组群名称结尾的斜杠(例如:cpuacct.usage=0 group1/)是可选的。
您可以使用
cgset 设定的值可能取决于在具体层级中设定的较大的值。例如:如果将 group1 限制为只能使用系统中的 CPU 0,则您无法将 group1/subgroup1 设定为使用 CPUs 0 和 1,或者只使用 CPU 1。
您还可以使用
cgset 将一个 cgroup 中的参数复制到另一个现有 cgroup 中,例如:
cgset --copy-from group1/ group2/
~]# cgset --copy-from group1/ group2/
使用
cgset 复制参数的语法为:cgset --copy-from path_to_source_cgroup path_to_target_cgroup,其中:
- path_to_source_cgroup 是相对该层级中 root 组群,到要复制其参数的 cgroup 的路径。
- path_to_target_cgroup 是相对该层级 root 组群的目的 cgroup 的路径。
请确定您在从一个组群将参数复制到另一个组群前为不同子系统设定强制参数,否则命令会失败。有关强制参数的详情请参考 重要 - 强制参数。
备用方法
要直接在 cgroup 中设置参数,请使用
echo 命令将值插入相关子系统伪文件。例如:这个命令可将值 0-1 插入 cgroup group1 的 cpuset.cpus 伪文件中:
echo 0-1 > /cgroup/cpuset/group1/cpuset.cpus
~]# echo 0-1 > /cgroup/cpuset/group1/cpuset.cpus
在此设定这个值,则这个 cgroup 中的任务就限制在该系统的 CPU 0 和 1 中。