我在安装了libcgroup的 Ubuntu 14 和 SUSE 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更改失败
为什么会这样? 谢谢!
答案 0 :(得分:2)
我刚刚在Ubuntu 16.04上玩cgroup时碰到了类似的东西。
使用控制器cpuset时,不会启动cpus和mems。因此,您必须手动执行此操作。由于您已经指定了cpuset.cpus,因此只需要设置cpuset.mems
只需运行
echo 0 > /sys/fs/cgroup/cpuset/nadav2ndCpuSet/cpuset.mems
或
cgset -r cpuset.mems=0 nadav2ndCpuSet
可以解决您的问题。
有关cpuset的更多信息,请参阅http://man7.org/linux/man-pages/man7/cpuset.7.html