cgroups - 尝试将进程添加到 cgroup 时获取 'cgroup change of group failed'

标签 cgroups

我在 上做了以下两件事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/

相关文章:

linux - 如何在 Ubuntu 中启用 CONFIG_RT_GROUP_SCHED 使其成为 RT

ubuntu - C组: cannot create a new group

php - 如何在 php exec 中使用 cgroups

linux - 如何增加子进程数量

java - 容器中的JVM错误地计算处理器?

linux - 如何使用 cgroup v2 从容器内获取 docker 容器 ID

linux - 由于 cgroups 配置错误导致 docker 启动失败

linux-kernel - KVM和LXC的区别

linux - 在 Debian 11 (Bullseye) 上,docker 容器内的/proc/self/cgroup 不显示 docker 信息