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

Как я могу создавать и использовать cgroups Linux как пользователь без полномочий root?

Как я могу создавать и использовать cgroups как пользователь без полномочий root?

Например, могу ли я полностью как пользователь без полномочий root:

?

я первая спросила Вот но я не получил полного ответа. Я также спросил в stackoverflow, но вопрос был закрыт как не по теме.

Вы не можете сделать это как обычный пользователь. Но вы можете настроить контрольную группу как root и сделать ее настраиваемой вашим пользователем.

Если у вас еще не установлены контроллеры cgroups по умолчанию, например, systemd:

$ sudo mount -t tmpfs cgroup_root /sys/fs/cgroup
$ sudo mkdir /sys/fs/cgroup/cpuset
$ sudo mount -t cgroup -o cpuset cpuset /sys/fs/cgroup/cpuset

Создайте cgroup:

$ sudo mkdir /sys/fs/cgroup/cpuset/${USER}
$ sudo chown -R ${USER} /sys/fs/cgroup/cpuset/${USER}

Теперь вы можете изменить конфигурацию вашей контрольной группы как обычный пользователь:

$ echo 0-3 > /sys/fs/cgroup/cpuset/${USER}/cpuset.cpus

Добавьте процесс в эту группу:

$ ./my_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/tasks

Или создайте подгруппу:

$ mkdir /sys/fs/cgroup/cpuset/${USER}/subgroup
$ echo 0-1 > /sys/fs/cgroup/cpuset/${USER}/subgroup/cpuset.cpus
$ ./my_other_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/subgroup/tasks

Если вы используете Ubuntu, вы (пользователь root) можете установить cgroup-lite и добавьте то, что вам нужно, в /etc/cgconfig.conf, включая информацию о том, какие пользователи могут изменять конфигурацию контрольной группы. Он запускается при загрузке.

В противном случае вы (пользователь root) можете добавить свой собственный сценарий для запуска во время загрузки.

Есть серия статей о LWN о cgroups см. часть 1, или поискать там можно. Systemd включает набор помощников для управления контрольными группами (процессами).