技术解析

Cgroup - 从 CPU 资源隔离说起(一)
0
2021-07-06 05:25:57
idczone

Cgroup - 从 CPU 资源隔离说起

Zorro ] icon

Hi ,我是 Zorro 。这是我的微博地址,我会不定期在这里更新文章,如果你有兴趣,可以来关注我呦。

本文有配套视频演示,一起服用效果更佳。

另外,我的其他联系方式:

Email: [email protected]

QQ: 30007147

今天我们来谈谈:

什么是 Cgroup ?

cgroups ,其名称源自控制组群( control groups )的简写,是 Linux 内核的一个功能,用来限制,控制与分离一个进程组群的资源(如 CPU 、内存、磁盘输入输出等)。

--引自维基百科:cgroup

引用官方说法总是那么冰冷的让人不好理解,所以我还是稍微解释一下:

一个正在运行着服务的计算机系统,跟我们高中上课的情景还是很相似的。如果把系统中的每个进程理解为一个同学的话,那么班主任就是操作系统的核心( kernel ),负责管理班里的同学。而 cgroup ,就是班主任控制学生行为的一种手段,所以,它起名叫 control groups 。

既然是一种控制手段,那么 cgroup 能控制什么呢?当然是资源啦!对于计算机来说,资源大概可以分成以下几个部分:

  • 计算资源
  • 内存资源
  • io 资源
  • 网络资源

这就是我们常说的内核四大子系统。当我们学习内核的时候,我们也基本上是围绕这四大子系统进行研究。
我们今天要讨论的,主要是 cgroup 是如何对系统中的 CPU 资源进行隔离和分配的。其他资源的控制,我们以后有空再说喽。

如何看待 CPU 资源?

由于进程和线程在 Linux 的 CPU 调度看来没啥区别,所以本文后续都会用进程这个名词来代表内核的调度对象,一般来讲也包括线程

如果要分配资源,我们必须先搞清楚这个资源是如何存在的,或者说是如何组织的。我想 CPU 大家都不陌生,我们都在系统中用过各种工具查看过 CPU 的使用率,比如说以下这个命令和它的输出:

[[email protected] ~]$ mpstat -P ALL 1 1
Linux 4.2.5-1-ARCH (zorrozou-pc0)   2015 年 12 月 22 日 _x86_64_     (4 CPU)mt

16 时 01 分 08 秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
16 时 01 分 09 秒  all    0.25    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.50
16 时 01 分 09 秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
16 时 01 分 09 秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
16 时 01 分 09 秒    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
16 时 01 分 09 秒    3    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all    0.25    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.50
Average:       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       3    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00

没人顶楼主,可惜,战略性 mark

mark 。。。

楼主讲的不错,技术理解与表达能力兼具。

mark

Lz 的技术文章不错,可是能不能介绍一下背景为什么要讨论这个主题

cgroup 是 Docker 的底层实现资源隔离的技术,我本人算是在工作中有一些使用上的心得经验,分享一下。

遇到熟人
数据地带为您的网站提供全球顶级IDC资源