我在 上做了以下两件事Ubuntu 14 和 SUSE Linux Enterprise Server 11 (x86_64) 安装 libcgroup 的地方,使用 root:
cgcreate -t ngam:home -a ngam:home -g cpuset:/nadav2ndCpuSet
cgset -r cpuset.cpus=1 nadav2ndCpuSet
之后,如果你猫 /sys/fs/cgroup/cpuset/nadav2ndCpuSet/cpuset.cpus ,
你会得到:
1
这很好!因为它应该工作。
然后,来自用户 甘 ,我运行了以下cmd:
cgexec -g cpuset:nadav2ndCpuSet ~/whileLoop
哪里 whileLoop 只是一个简单的程序,它在循环中运行,执行 sqrt。
之后,我收到以下错误消息:
cgroup 更改组失败
为什么会发生?
谢谢!
最佳答案
我刚才在 Ubuntu 16.04 上玩 cgroup 时遇到了类似的问题。
使用 Controller 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
关于cgroups - 尝试将进程添加到 cgroup 时获取 'cgroup change of group failed',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37533173/