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


21

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

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

  • создать группу с доступом к одному процессору
  • создать новый процесс в этой группе

?

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

Ответы:


18

Вы не можете сделать это как обычный пользователь. Но вы можете настроить cgroup как 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

Создать группу:

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

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

$ 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

как бы вы удалили подгруппу? rm -rтерпит неудачу для меня
hbogert

1
rm -rбудет пытаться удалить файлы в первую очередь, что не удается. Используйте rmdirдля удаления cgroup.
Деннис Б.

Вы не можете, rmdirпока tasksфайл не будет пустым. root должен посмотреть на файл задач в подгруппе и отобразить каждый pid там в файле задач корневой cgroup ( /dev/cpuset/tasksв моем окне RHEL 6.7 [kernel 2.6.32-358], но здесь это /sys/fs/cgroup/cpuset/tasksможет показаться уместным).
Майк С

1

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

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


0

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


Эта ссылка для части 1, скорее всего, должна указывать на lwn.net/Articles/531114 .
Крис

Связанная статья LWN о пространствах имен, lwn.net/Articles/604609 о cgroups.
Деннис Б.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.