我尝试了cpuset(7)手册中的示例,并创建了一个cpuset-Charlie。在Ubuntu 14.4 LTS和SLES 12上,当我试图将当前进程放入cpuset时,都会出现以下错误:
/dev/cpuset/Charlie# echo $$ > tasks
bash: echo: write error: No space left on device
有什么帮助吗?
这通常意味着没有任何内存节点分配给cpuset。
$ cat /dev/cpuset/Charlie/cpuset.mems
将返回空行。因此,您不能将新任务分配给这个cgroup,因为它将没有任何内存可供使用。
将一个或所有内存节点分配给这个cgroup应该可以修复它。
$ echo 0 > /dev/cpuset/Charlie/cpuset.mems
您还需要分配一个cpu节点,因为它也可能是空的。
$ echo 0 > /dev/cpuset/Charlie/cpuset.cpus
将cgroup.clone_children设置为1有助于在创建子cgroup时自动从父cgroup继承内存和节点设置。