systemd子进程不在同一个CGroup中
当一个进程启动时,它会被分配到一个CGroup中。CGroup是Linux内核提供的一种机制,用于将进程组织成一个层次结构,并对其资源使用进行限制和控制。
systemd是一个Linux系统初始化和管理的守护进程,它使用CGroup来管理和控制各个系统服务的资源使用。当systemd启动一个服务时,它会为该服务创建一个独立的CGroup,并将该服务的进程及其子进程都放入该CGroup中。
然而,有时候子进程可能不在同一个CGroup中。这可能是因为子进程是通过其他方式启动的,而不是通过systemd。例如,如果一个服务使用了fork()系统调用创建了一个子进程,而该子进程没有被systemd管理,那么该子进程就不会被放入同一个CGroup中。
在这种情况下,子进程将被分配到默认的CGroup中,而不是与父进程相同的CGroup。这可能会导致资源使用的限制和控制无法生效,因为默认的CGroup可能没有进行相应的限制和控制。
为了解决这个问题,可以手动将子进程移到与父进程相同的CGroup中。可以使用工具如systemd-run来启动子进程,并将其放入指定的CGroup中。另外,也可以使用cgexec命令将已经运行的进程移到指定的CGroup中。
总之,当systemd子进程不在同一个CGroup中时,可能会导致资源使用的限制和控制无法生效。可以通过手动将子进程移到相同的CGroup中来解决这个问题。
原文地址: https://www.cveoy.top/t/topic/iUww 著作权归作者所有。请勿转载和采集!