我想知道是否可以对cgroup中的内存子系统设置动态限制。目前,我禁用了OOM和一个虚拟进程来测试控制组,当达到内存限制时,进程就会冻结(正如预期的那样),但是当我试图设置更大的限制(比如2倍多的内存)时,echo命令将失败,进程将保持冻结状态。
如何在不将进程移动到另一个设置了新限制的cgroup的情况下,在cgroup中设置动态内存使用限制?
发布于 2014-07-08 06:10:53
当您提到使用cgroup的“动态限制”时,您需要更具体地说明您要寻找的是什么。最好提供一个例子,说明你的应用程序和cgroup与cgconfig.conf一起做了什么。这会给我们更好的画面。
尽管cgroup允许使用memory.limit_in_bytes在cgconfig.conf中将进程限制在一定数量的内存,但它只设置上限,如果进程使用下限,则不会抱怨。因此,我不确定在这种情况下是否需要cgroup。
因此,如果您的程序正在动态地分配内存,您可能还需要检查内存中有多少内存被占用了。使用sysctl -a | grep overcommit检查内核可调性,并将其更改为始终超额提交,而不管内存是否可用。
发布于 2014-08-03 20:53:41
嗯,经过一些研究,我发现当有任务时,cgroup中的一些参数不能被修改。
遗憾的是,内存限制参数就是其中之一。
我认为我的最后一个选择是使用任务迁移特性,并根据需要创建具有新内存限制的cgroup。
https://askubuntu.com/questions/492859
复制相似问题