Docker学习系列:聊一聊资源限制使用的Cgroup技术

今天在看Docker技术实现的时候,看到了Cgroup这个技术,原先没有深入了解Docker怎么实现资源隔离也没有怎么关注过。这次看到了Cgroup,那么顺便也记录Cgroup这个技术。

第一次接触Cgroup

第一次接触到Cgroup是去年在一家公司做大数据程序,有部分程序实现的代码需要把部署在服务器上的程序与C语言程序进行系统资源隔离分开。
避免两个程序进行资源的争夺导致其他程序失败,我们在实现的过程中就是采用的Cgroup。

什么是Cgroup

Cgroup是Linux内核提供的一种可以限制,记录,隔离进程组所使用的物力资源的机制。
作者是Goolge的Paul Menage,为LXC实现虚拟化所采用的 的资源管理手段。
其实Cgroup是从Linux的进程管理中的cpuset剥离出来的。

功能及组成

Cgroup 能够将进程进行分组然后进行管理I/O,内存的分配,CPU的使用等等,这些资源管理功能称为Cgroup的子系统或者控制系统。
内核使用Cgroup子系统由/proc/cgroup确认.
在想使用这些分组管理以及子系统,那么在系统中需要挂载CGroup的文件系统。
支持的子系统如下:

文件名称 读与写 用途
Task 读与写 设置分组的线程的列表
Cgroup.procs 属于分组的进程PID列表,包含多线程进程的线程leader的TID
enent_control 读与写 监视状态变化和分组删除事件的配置文件

概念解释

  • 任务:系统的一个子进程。
  • control group 控制族群。按照某一个标准出现的进程组。
  • 层级:金字塔结构,底层继承父层的属性限制。
  • 子系统:一个子系统就是资源控制器。子系统加入到某个层级以后,层级上的所有控制族群都受到子系统的控制。

架构图

摘自IBM论坛

从架构图中我们可以看到该技术是用在操作系统的底层上的,起到Container的作用。

Docker也利用了CGroup

我们在系统上建立多个容器,并且使用run 参数设置cpu,内存等信息。其实机制也是利用了CGroup技术来达到的实现。
为什么我们要限制资源?
如果我们在一个系统级别上创立了很多种容器。并且都没有对容器进行资源的限制。
当使用这些容器运行时,就可能出现资源竞争的情况,并且可能存在某个容器把资源抢光的情景。
这就是CGroup需要做的事情了,进行资源的隔离。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,800评论 0 120
  • Docker容器技术已经发展了好些年,在很多项目都有应用,线上运行也很稳定。整理了部分Docker的学习笔记以及新...
    __七把刀__阅读 11,653评论 0 58
  • 情景一 我明天出去玩的啊! 你又去哪里的呀,一天到晚就知道跑,不是说没有钱吗?还跑。不是说天天累的很吗?不在家睡觉...
    月儿的2016阅读 153评论 0 0
  • 世界很大 这渺小的芸芸众生 他们短暂的生命 也不过是一个过场 我有时候就在想 我为什么是我 世界这么大 我为什么就...
    大头吱吱怪阅读 224评论 0 0
  • 人生需要少做选择 看到这个题目有没有感觉似曾相识?在《见识》第二章,也讲了人生需要做减法。 第二章针对的是自己,而...
    一颗有趣的豆阅读 198评论 0 1

友情链接更多精彩内容