尝试将进程添加到 cgroup 时出现“cgroup 组更改失败”

nad*_*gam 3 cgroups

我在安装了 libcgroup 的Ubuntu 14SUSE Linux Enterprise Server 11 (x86_64)上使用 root 执行了以下操作:

cgcreate -t​​ ngam:home -a ngam:home -g cpuset:/nadav2ndCpuSet

cgset -r cpuset.cpus=1 nadav2ndCpuSet

之后,如果你 cat /sys/fs/cgroup/cpuset/nadav2ndCpuSet/cpuset.cpus,你会得到: 1

这很好!因为它应该工作。

然后,从用户ngam,我运行了以下 cmd:

cgexec -g cpuset:nadav2ndCpuSet ~/whileLoop

其中whileLoop只是一个简单的程序,它在循环中运行,执行 sqrt。

之后,我收到以下错误消息:

cgroup 更改组失败

为什么会发生?谢谢!

Jes*_*org 5

我刚才在 Ubuntu 16.04 上玩 cgroup 时遇到了类似的问题。

使用控制器cpuset时,不会启动cpus和mems。因此,您必须手动执行此操作。因为你已经指定了 cpuset.cpus 你只需要设置 cpuset.mems

简单地运行

echo 0 > /sys/fs/cgroup/cpuset/nadav2ndCpuSet/cpuset.mems
Run Code Online (Sandbox Code Playgroud)

或者

cgset -r cpuset.mems=0 nadav2ndCpuSet
Run Code Online (Sandbox Code Playgroud)

会解决你的问题。

有关 cpuset 的更多信息,请参阅http://man7.org/linux/man-pages/man7/cpuset.7.html