无法设置 v1 cgroup 限制

无法设置 v1 cgroup 限制

我已将 pids.max 限制设置为400,我想将其设置为max

它存在/sys/fs/cgroup/pids/pids.max

sudo cgget -g pids:/
/:
pids.current: 278
pids.max: 400

我认为我可以通过运行以下命令来设置它,但pids.max保持在 400。

$ sudo cgset -r pids.max=500 pids:/
$ sudo cgget -g pids:/
/:
pids.current: 278
pids.max: 400

我该如何改变pids.max

答案1

这是语法问题。

man cgset告诉:

概要

cgset [-r <name=value>] <cgroup_path> ...
cgset --copy-from <source_cgroup_path> <cgroup_path> ... 

您的案例中的 cgroup_path 是/,而不是uids:/cgset当应用于不存在的 cgroup 时,它将默默地不执行任何操作并且不会返回任何错误。这可以通过以下方式验证strace(使用strace -e trace=open,openat,close,write):

不工作cgset -r pids.max=max pids:/

[...]
openat(AT_FDCWD, "/sys/fs/cgroup/pids/pids:/pids.max", O_RDWR|O_CLOEXEC) = -1 ENOENT (No such file or directory)
+++ exited with 0 +++

在职的cgset -r pids.max=max /

[...]
openat(AT_FDCWD, "/sys/fs/cgroup/pids/pids.max", O_RDWR|O_CLOEXEC) = 3
write(3, "max", 3)                      = 3
close(3)                                = 0
+++ exited with 0 +++

当然,您也可以直接从 shell 写入这个伪文件来执行相同的操作,但是使用sudo会使它变得更加复杂(例如:必须使用命令tee而不是 shell 重定向)。

相关内容