cgroup de Linux: mover un proceso de un cgroup a otro

cgroup de Linux: mover un proceso de un cgroup a otro

Prefacio: No estoy 100 por ciento familiarizado con systemd y los conceptos de archivos unitarios, pero he leído un poco.

Contexto: quiero mover un proceso de un árbol de cgroup a otro, en una distribución que ejecuta systemd y (que no es systemd, digamos advenedizo). Más específicamente, digamos que el árbol de cgroup se ve así.

Básicamente, la jerarquía se ve así en relación con my_root

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

entonces P se mueve bajo d21 o

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

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

Hablemos del depósito que no es systemd: si estoy ejecutando una distribución que no ejecuta systemd, puedo simplemente hacer eco del pid en P1y luego moverá mi proceso a ese cgroup.cgroups.procsd21

Y ahora el systemdcaso de uso, y esto es de lo que no estoy seguro, digamos que hago lo mismo que hice anteriormente, hay dos cosas que pueden suceder.

  • El proceso avanza allí y permanece allí.
  • El proceso se mueve allí inicialmente, pero después de un tiempo regresa o va al grupo raíz para ese controlador en particular.

Quiero evitar esto último. Básicamente, estoy pensando que cuando especifico el archivo de unidad para mi aplicación, quiero tomar posesión del cgroup en el que se inicia la aplicación, por ejemplo, la aplicación toma posesión de my_rootcgroup, para que systemd no interfiera con el movimiento del proceso.

Ahora a la pregunta de varias partes.

  • ¿Systemd realmente alejará el proceso del cgroup al que lo moví?
  • En caso afirmativo, ¿qué debo hacer para tomar posesión del cgroup en el archivo de la unidad? Estoy buscando algunos ejemplos específicos de archivos unitarios.

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

información relacionada