2015-02-05 181 views
2

我尝试了cpuset(7)手册中的示例并创建了一个cpuset Charlie。在这两个Ubuntu的LTS 14.4和SLES 12,我得到试图把当前进程进入cpuset如果出现以下错误:

/dev/cpuset/Charlie# echo $$ > tasks

bash: echo: write error: No space left on device

任何帮助吗?

+0

标签为您创建 - 现在请为其添加摘要。 – 2015-02-09 06:37:23

回答

5

这通常意味着您没有任何内存节点分配给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中时。

+0

在示例中,他们在目录Charlie中回显1> cpuset.mems。但是不管它是0还是1 - 它都不起作用,并给出相同的错误。 – 2015-02-06 17:07:40

+0

对不起,不完整的答案。我忘记了我对内存所说的话也适用于cpu。 CPU掩码也未设置。除了修复内存外,还要添加一个cpu掩码: $ echo 0> /dev/cpuset/Charlie/cpuset.cpus 如果cpuset.cpus和cpuset.mems都是非空的,您将能够添加一项任务。 – 2015-02-09 06:31:55

+0

我指的是在开始的示例执行以下操作: $ MKDIR的/ dev/cpuset $安装-t cpuset cpuset的/ dev/cpuset $ CD的/ dev/cpuset $的mkdir查理 $ CD查理 $/bin/echo 2-3> cpuset.cpus $/bin/echo 1> cpuset.mems $/bin/echo $$>任务 #当前shell正在cpuset中运行Charlie #下一行应显示'/Charlie' $ cat/proc/self/cpuset 所以所有的“回声”都完成了,但它仍然不起作用。 :-( – 2015-02-10 07:39:28

相关问题