Cgroup Linux: mova um processo de um cgroup para outro

Cgroup Linux: mova um processo de um cgroup para outro

Prefácio: Não estou 100% familiarizado com o systemd e os conceitos de arquivos unitários, mas fiz algumas leituras.

Contexto: Quero mover um processo de uma árvore cgroup para outra, em uma distribuição executando o systemd e (não-systemd, digamos, iniciante). Mais especificamente, digamos que a árvore do cgroup se pareça com isto.

Basicamente a hierarquia se parece com isto em relação a my_root

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

então P se move sob d21 ou

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

Para completar, digamos my_root = /sys/fs/cgroups/cpu,cpuacct/my_root

Vamos falar sobre o bucket que não é do systemd: se eu estiver executando em uma distribuição que não esteja executando o systemd, posso simplesmente repetir o pid de P1into cgroups.procsof d21e então ele moverá meu processo para aquele cgroup.

E agora o systemdcaso de uso, e é disso que não tenho certeza, digamos que faço a mesma coisa que fiz acima, há duas coisas que podem acontecer.

  • O processo se move para lá e permanece lá.
  • O processo se move para lá inicialmente, mas depois de algum tempo ele volta ou vai para o cgroup root daquele controlador específico.

Eu quero evitar o último. Basicamente, estou pensando que quando estou especificando o arquivo unitário para meu aplicativo, quero apropriar-me do cgroup em que o aplicativo é iniciado, por exemplo, o aplicativo assume a propriedade do my_rootcgroup, para que o systemd não interfira na movimentação do processo.

Agora, para a questão multiparte.

  • O systemd realmente afastará o processo do cgroup para o qual eu o movi?
  • Se sim, o que preciso fazer para apropriar-me do cgroup no arquivo da unidade. Estou procurando alguns exemplos específicos de arquivos de unidade.

recurso :https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/

informação relacionada