1

Предисловие: я не на 100 процентов знаком с systemd и концепциями файлов модулей, но я немного прочитал.

Контекст: я хочу переместить процесс из одного дерева cgroup в другое в дистрибутиве, где запущены systemd и (не systemd, скажем, upstart). Точнее, скажем, дерево cgroup выглядит следующим образом.

В основном иерархия выглядит так относительно my_root

                     my_root
                        |
                  ______ ___________
                  |                |
                  d11             d12
              (P lives here)       |
                              ___________
                              |          |
                             d21        d22

тогда P переходит под d21 или

                     my_root
                        |
                  ______ ___________
                  |                |
                  d11             d12
                                   |
                              ___________
                              |          |
                             d21        d22
                     (P lives here now) 

Для полноты картины допустим, что my_root = /sys/fs/cgroups/cpu,cpuacct/my_root

Давайте поговорим о несистемном сегменте: если я работаю в дистрибутиве, где нет systemd, я могу просто перенести pid P1 в cgroups.procs из d21 и затем он перенесет мой процесс в эту cgroup.

А теперь сценарий использования systemd , и в этом я не уверен, скажем, я делаю то же самое, что я делал выше, могут произойти две вещи.

  • Процесс движется туда и остается там.
  • Сначала процесс перемещается туда, но через некоторое время он либо возвращается, либо переходит в корневую группу для этого конкретного контроллера.

Я хочу избежать последнего. По сути, я думаю, что когда я указываю файл модуля для своего приложения, я хочу взять на себя ответственность за cgroup, в которой запускается приложение, например, приложение становится владельцем группы my_root , так что systemd не мешает перемещению процесса.

Теперь к многочастному вопросу.

  • Действительно ли systemd удалит процесс из группы, в которую я его перенес?
  • Если да, то что мне нужно сделать, чтобы стать владельцем группы в файле модуля. Я ищу некоторые конкретные примеры файлов модулей.

ресурс: https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/

0