Предисловие: я не на 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 ведре: Если я бег на дистрибутиве , который не работает Systemd я могу только повторить идентификатор процесса P1
в cgroups.procs
о , d21
а затем он будет двигать процесс этой контрольной группы.
А теперь systemd
вариант использования, и в этом я не уверен, скажем, я делаю то же самое, что я делал выше, могут произойти две вещи.
- Процесс движется туда и остается там.
- Первоначально процесс перемещается туда, но через некоторое время он либо возвращается, либо переходит в корневую группу для этого конкретного контроллера.
Я хочу избежать последнего. По сути, я думаю, что когда я указываю файл модуля для своего приложения, я хочу стать владельцем cgroup, в котором запускается приложение, например, приложение становится владельцем my_root
cgroup, чтобы systemd не мешала перемещению процесса.
Теперь к многочастному вопросу.
- Действительно ли systemd удалит процесс из группы, в которую я его перенес?
- Если да, то что мне нужно сделать, чтобы стать владельцем группы в файле модуля. Я ищу некоторые конкретные примеры файлов модулей.
ресурс: https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/