首页 > 其他 > 详细

docker原理讲解2-Cgroups

时间:2020-08-23 10:16:56      阅读:72      评论:0      收藏:0      [点我收藏+]

??linux namespace技术用于帮助进程隔离出自己单独的空间,但是为了对容器进行管理,还需要对每个容器的资源进行限制,保证他们不会互相争夺资源,这就需要用到linux中的Ggroups技术。
Cgroups定义
??linux Cgroups(Control Groups)提供了对一组进程及将来子进程的资源限制、控制和统计的能力,这些资源包括CPU、内存、存储、网络等。通过Cgroups,可以方便地限制某个进程地资源占用,并且可以实时地监控进程地监控和统计信息。
Cgroups组件
??Cgroups主要由以下三个组件组成:

  • cgroup 该组件用于对一组进程进行管理,可以在这个cgroup基础上增加linux subsystem的各种参数配置。将一组进程和一组subsystem的配置关联起来
  • subsystem subsystem是一组资源控制模块,包含下面这些项:
  • blkio 对块设备输入输出的访问
  • cpu 设置一组cgroup中进程cpu被调度的策略
  • cpuacct 可以统计cgroup中进程cpu的占用
  • cpuset 在多核机器上设置cgroup可以使用的cpu和内存
  • devices 控制cgroup中进程对设备的访问
  • freezer 用于挂起和恢复cgroup中的进程
  • memory 用于控制cgroup中进程的内存占用
  • net_cls 用于将cgroup中进程产生的网络包分类,便于linux的tc根据分类进行限流或监控
  • ns 使cgroup中的新进程在新的namespace中fork新进程时,创建出一个新的cgroup。
  • hierarchy 把一组cgroup串成一个树状的结构,通过这种树状结构,Cgroups可以做到集成。docker的继承时通过他来实现的。
    三个组件之间的关系
    ??一个hierarchy创建后,会有一个cgroup生成,系统中所有的进程都会加入到这个新的cgroup中。一个subsystem只能附加到一个hierarchy上面,但一个hierarchy可以附加多个subsystem。ige进程可以作为多个cgroup的成员,但这些group必须在不同的hierarchy中。一个进程fork出一个子进程时,子进程和父进程都在同一个cgroup中,也可以根据需要将其移动到其他cgroup中。

docker原理讲解2-Cgroups

原文:https://www.cnblogs.com/Rostov/p/13544744.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!