• docker原理讲解2-Cgroups


      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中。
  • 相关阅读:
    JS创建类的方法--简单易懂有实例
    CommonJS, AMD, CMD是什么及区别--简单易懂有实例
    JS回调函数--简单易懂有实例
    单链表应用(2)--使用快慢指针,如何判断是否有环,环在哪个节点
    单链表应用(1)--使用快慢指针,找链表中间值
    自定义线性结构-有序Map
    C++中final和override
    双向链表翻转
    检查“()”是否匹配并返回深度
    是否存在K
  • 原文地址:https://www.cnblogs.com/Rostov/p/13544744.html
Copyright © 2020-2023  润新知