Назад | Перейти на главную страницу

Невозможно установить лимит контрольной группы v1

У меня установлен предел 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?

Это проблема синтаксиса.

man cgset говорит:

ОБЗОР

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

cgroup_path для вашего случая /не uids:/. cgset ничего не сделает и не вернет ошибки при применении к несуществующей контрольной группе. Это можно проверить с помощью 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 +++

Конечно, вы также можете написать прямо из оболочки в этот псевдо-файл, чтобы сделать то же самое, но используя sudo делает его более сложным (например: необходимость использования tee команда, а не перенаправление оболочки).