我试着理解cgroups在linux中是如何工作的,并阅读了以下内容:https://man7.org/linux/man-pages/man7/cgroups.7.html.
在手册中,它是这样说的:
cgroup是进程的集合,这些进程绑定到通过cgroup文件系统定义的一组限制或参数。
每个进程都有自己的cgroup,并且只有当其他进程是第一个cgroup的子进程时,才能将它们添加到该cgroup中,这样说对吗?
例如,我们用INIT启动系统,它的PID为1,从那时起,我们添加与INIT相关的新的子进程,这些进程中的每一个本身都可以有子进程,等等。每个新进程是否接收到与其父进程cgroup的限制相关的自己的cgroup,以及每次新进程获得cgroup并创建子进程时,该子进程将再次接收它自己的cgroup,同时与其父进程的cgroup相关,并且资源的限制是由正在使用的分发中可用的子系统设置的?
1条答案
按热度按时间bttbmeg01#
不,默认情况下,每个进程都在 current cgroup中启动。如果你想让一个进程有一个与父进程不同的cgroup,你必须显式地创建一个新的cgroup。例如,Systemd对每个服务都是这样做的。这也是Docker和LXC的工作方式。每个容器都在显式的新cgroup中。
这是一个全面的概述: