Linux cgroup: move um processo de um cgroup para outro

1

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

Contexto: Eu quero mover um processo de uma árvore do cgroup para outra, na distribuição do systemd e (não-systemd, digamos, upstart). Mais especificamente, vamos dizer que a árvore do cgroup se parece com isso.

Basicamente, hierarquia parece com isso 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, vamos dizer my_root = /sys/fs/cgroups/cpu,cpuacct/my_root

Vamos falar sobre o bucket não-systemd: Se eu estou rodando em uma distro que não está rodando systemd, posso apenas fazer um eco do pid de P1 em cgroups.procs de d21 e então ele moverá meu processo para esse cgroup.

E agora o caso de uso systemd , e é disso que estou inseguro, digamos que faço a mesma coisa que fiz anteriormente, há duas coisas que podem acontecer.

  • O processo se muda para lá e fica lá.
  • O processo é movido para lá inicialmente, mas depois de algum tempo ele volta ou vai para o cgroup root desse controlador em particular.

Eu quero evitar o último. Basicamente eu estou pensando que quando estou especificando o arquivo de unidade para o meu aplicativo eu quero apropriar-se do cgroup que o aplicativo é lançado, por exemplo o aplicativo assume a propriedade de my_root cgroup, para que systemd não interfira no processo mover.

Agora para a pergunta com várias partes.

  • O systemd realmente removerá o processo do cgroup em que eu o movi?
  • Se sim, então o que eu preciso fazer para apropriar-se do cgroup no arquivo de unidade. Eu estou procurando alguns exemplos específicos de arquivos unitários.

recurso: link

    
por Rahul Dimri 05.04.2018 / 21:02

0 respostas