本文详细介绍了Linux内核中的Cgroup概念,包括任务、控制族群、层级结构和子系统的关系,以及其实现的资源限制、优先级控制和隔离等功能。展示了如何在实践中运用Cgroup进行进程资源管理和隔离。
摘要生成于
,由 DeepSeek-R1 满血版支持,
1.任务(task)。在cgroups中,任务就是系统的一个进程。
2.控制族群(control group)。控制族群就是一组按照某种标准划分的进程。Cgroups中的资源控制都是以控制族群为单位实现。一个进程可以加入到某个控制族群,也从一个进程组迁移到另一个控制族群。一个进程组的进程可以使用cgroups以控制族群为单位分配的资源,同时受到cgroups以控制族群为单位设定的限制。
3.层级(hierarchy)。控制族群可以组织成hierarchical的形式,既一颗控制族群树。控制族群树上的子节点控制族群是父节点控制族群的孩子,继承父控制族群的特定的属性。
4.子系统(subsystem)。一个子系统就是一个资源控制器,比如cpu子系统就是控制cpu时间分配的一个控制器。子系统必须附加(attach)到一个层级上才能起作用,一个子系统附加到某个层级以后,这个层级上的所有控制族群都受到这个子系统的控制。
1.每次在系统中创建新层级时,该系统中的所有任务都是那个层级的默认 cgroup(我们称之为 root cgroup ,此cgroup在创建层级时自动创建,后面在该层级中创建的cgroup都是此cgroup的后代)的初始成员。
2.一个子系统最多只能附加到一个层级。
3.一个层级可以附加多个子系统
4.一个任务可以是多个cgroup的成员,但是这些cgroup必须在不同的层级。
5.系统中的进程(任务)创建子进程(任务)时,该子任务自动成为其父进程所在 cgroup 的成员。然后可根据需要将该子任务移动到不同的 cgroup 中,但开始时它总是继承其父任务的cgroup。
cgroup
s资源限制
上一篇文章中,我们了解了Docker的资源隔离技术namespace,通过系统调用构建了一个相对隔离的shell环境。也可以称之为一个简单的容器。接下来将讲解另一个强大的内核工具-
cgroup
s。它不仅可以限制被namespace隔离起来的资源,还可以为资源设置权重、计算使用量、操控任务
(
进程或线程
)
启停等。
1.
cgroup
s是什么
cgroup
s顾名思义就是把任务放到一...
一、
Cgroup
的目的
Cgroup
和namespa类似,也是将进程进程分组,但是目的与namespace不一样,namespace是为了隔离进程组之前的资源,而
Cgroup
是为了对一组进程进行统一的资源监控和限制。
二、为什么需要
Cgroup
在Linux里,对进程进程分组,比如Session group、process group等,后来需要追踪一组进程的内存和IO使用情况,出现了
cgroup
,用来统一对进程进行分组,并在分组的基础上对进程进程监控和资源控制管理等。
三、...
CGroup
简介
CGroup
是 Control Groups 的简称,通俗的来说,
cgroup
s 可以限制、记录、隔离进程组所使用的物理资源(包括:CPU、memory、IO 等),为容器实现虚拟化提供了基本保证,是构建 Docker 等一系列虚拟化管理工具的基石。
CGroup
主要有四大
功能
:
资源限制(Resource Limitation):
cgroup
s 可以对进程组使用的资源总额进行限制。如设定应用运行时使用内存的上限,一旦超过这个配额就发出 OOM(Out of Memory)。
优先级分配(
笔者作为一个初学者,在学习了docker的原理和
概念
后,对
cgroup
和namespace产生了兴趣,于是开始学习它们。学习理解并做出了归纳。
什么是
cgroup
cgroup
s,其名称源自控制组群(control groups)的简写,是Linux内核的一个
功能
,用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等)
cgroup
s的一个设计目标是为不同的应用情况提供统一的接口,...
memory
cgroup
Cgroup
的memory子系统,即memory
cgroup
(memcg),提供了对系统中一组进程的内存行为的管理,从而对整个系统中对内存有不用需求的进程或应用程序区分管理,实现更有效的资源利用和隔离。
在实际业务场景中,为了防止一些应用程序对资源的滥用(可能因为应用本身的bug,如内存泄露),导致对同一主机上其他应用造成影响,我们往往希望可以控制应用程序的内存使用量,这是memcg提供的主要
功能
之一,当然它还可以做的更多。
Memcg的应用场景,往往来自一些虚拟化的业务需求,
目录一、
Cgroup
基本信息二、CPU使用率控制1、CPU使用率基本信息2、CPU使用率控制的方式3、利用stress压力测试工具来进行测试4、CPU周期5、限制CPU内核的使用三、内存限额四、Block I/O的限制五、bps和iops的限制
一、
Cgroup
基本信息
docker中对资源进行控制的方式是使用
Cgroup
,开控制资源,K8S中也有limit来控制资源
docker通过
Cgroup
来控制勇气使用的资源配额,包括CPU、内存、磁盘三大方面,基本覆盖常见的资源配额和使用量控制
目录Namespace
概念
容器6六项隔离Namespace API实际操作
Cgroup
概念
实际操作
之前学习了docker的一些原理和文件系统,对于其核心技术namespace和
cgroup
没有一个很好的认识,下面将记录其知识点
Namespace
namespce资源隔离,又称为命名空间,它主要做访问隔离。其原理是针对一类资源进行抽象,并将其封装在一起提供给一个容器使用,对于这类资源,因为每个容器都有自己的抽象,而他们彼此之间是不可见的,所以就可以做到访问隔离。
docker就是通过这样一种技术,使
Cgroup
(Control Groups)是这样一种机制:它以分组的形式对进程使用系统资源的行为进行管理和控制。也就是说,用户通过
cgroup
对所有进程进行分组,再对该分组整体进行资源的分配和控制。
1
Cgroup
的结构
cgroup
中的每个分组称为进程组,它包含多个进程。最初情况下,系统内的所有进程形成一个进程组(根进程组),根据系统对资源的需求,这个根进程组将被进一步细分为子进
文章目录玩Docker?
Cgroup
----资源分配一、
Cgroup
简介二、基于Dockerfile创建安装stress镜像三、创建容器的CPU权重控制四、cpu周期限制五、cpu core控制六、cpu配额控制参数的混合使用七、内存限额八、Block IO的限制九、bps和iops 的限制
玩Docker?
Cgroup
----资源分配
一、
Cgroup
简介
Cgroup
是Control Groups的缩写,是Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源
(
如CPU、 内存、磁
cgroup
的
功能
在于将一台计算机上的资源(CPU,memory,network)进行分片,来防止进程间不利的资源抢占。 术语
cgroup
:关联一组 task 和一组 subsystem 的配置参数。 一个 task 对应一个进程,
cgroup
是资源分片的最小单位。
subsystem:资源管理器,一个 subsystem 对应一项资源的管理,如 cpu, cpuset,memroy 等。