Cgroup是一种资源控制机制,它将操作系统中的所有进程分成组,并以分层结构组织所有的进程组。Cgroup为每个进程组指定一组访问资源的行为,这限制了该组进程对资源的访问。

1基本概念

子系统实际上是集团对流程集团资源控制的具体体现。子系统有很多种类型,每种类型的子系统代表一种系统资源,比如CPU、内存等。创建cgroup实例时,必须至少指定一个子系统。也就是说,这个新创建的进程组在访问子系统对应的系统资源时有一些限制。具体限制与子系统的类型有关。

Cgroup中进程组的层次关系和Linux中类似。在Linux操作系统中,一个进程通过fork系统调用创建一个子进程。两个进程之间是有层次关系的,子进程可以继承父进程的一些资源。系统中的所有进程形成树状的层次关系,每个进程唯一地位于进度树中的某个位置。

对于cgroup,cgroup实例也有特定的层次关系,但是它们的层次关系是为了对进程组进行更细粒度的资源控制。同时,子组继承父组的控制属性。

2子系统和层次之间的关系

如果要创建cgroup实例,可以使用以下命令:

装载–t c group–o CPU、内存cpu_memory /cgroup/cpu_memory

您可以看到,可以通过在Linux中挂载文件系统来创建cgroup实例。-t选项指定文件系统类型为cgroup类型,-o指定这次创建的cgroup实例与cpu和内存子系统相关联,cpu _内存指定当前cgroup实例在整个cgroup树中的层次名称,最后一个路径是文件系统挂载点。cgroup文件系统将在本文后面解释。

下图是一个系统中的组结构图,包括两个层次,即第一层cpu_mem和第二层cpuset_net。接下来,以此图为例,说明cgroup子系统与层次结构之间的设置规则。

系统中创建的第一个cgroup称为根cgroup,其成员包括系统中的所有进程。

如图,根cgroup位于cpu_mem层,包含系统中所有的进程;根cgroup分为两个子cgroup1和cgroup2,位于第二层cpuset_net。

一个子系统只能位于一个级别。

如图,cpu子系统位于一级cpu_mem,那么这个子系统就不能再位于二级了。但是,此设置规则不影响CG group对cpu子系统的使用,因为所有CG group都将继承根CG group所属的cpu子系统。

每个层次中可以关联多个子系统。

在图中,第一级cpu_mem与两个子系统相关联:cpu和内存。

一个过程可以位于不同级别的组中。

根cgroup包含系统中的所有进程,所以cgroup2中的进程p也位于根cgroup中。从资源控制的角度来看,进程P所在的进程组在访问cpu、内存和网络时会受到资源的限制。

在一个进程创建一个子进程后,默认情况下,子进程是父进程所在的组的成员。

创建子进程后,它会继承父进程的cgroup,但子进程可以根据需要移动到其他cgroup。

1.《Cgroup Cgroup简介-子系统与层级》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《Cgroup Cgroup简介-子系统与层级》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/1779593.html