Cgroup概述

Cgroup是一种Linux机制,用于将进程分组并进行资源管理和监控。不同于namespace的隔离,Cgroup旨在控制和监测进程组的资源使用,如CPU、内存等。通过cgroups文件系统,用户可以挂载不同的子系统并设置资源限制,实现如Docker等容器的资源隔离。Cgroup层次结构允许对资源进行多级控制,每个层次可以设置不同的资源限制,实现灵活的资源分配。
摘要由CSDN通过智能技术生成

一、Cgroup的目的    

    Cgroup和namespa类似,也是将进程进程分组,但是目的与namespace不一样,namespace是为了隔离进程组之前的资源,而Cgroup是为了对一组进程进行统一的资源监控和限制。

二、为什么需要Cgroup

    在Linux里,对进程进程分组,比如Session group、process group等,后来需要追踪一组进程的内存和IO使用情况,出现了cgroup,用来统一对进程进行分组,并在分组的基础上对进程进程监控和资源控制管理等。

三、Cgroup中名词概念

任务(Task) 在Cgroup中,任务就是系统的一个进程
控制族群(control group) 控制族群就是按照一组某种标准划分的进程。Cgroup中的资源控制都是以控制族群为单位实现。一个进程可以加入到某个控制族群,也可以从一个进程组迁移到另一个控制族群。一个进程组的进程可以使用cgroups以控制族群为单位分配资源,同时受到cgroups以控制族群为单位设定限制。
层级(hierachy) 控制族群可以组织成hierarchical的形式,既一颗控制族群树。控制族群树上的子节点控制族群是父节点控制族群的孩子,继承父控制族群的特定属性
子系统(subsystem) 一个子系统就是一个资源控制器

    Cgroup可以指整个cgrop技术,也可以指一个具体的进程组。

    Cgroup是Linux下一种将进程按组管理的机制,在用户层面看,Cgroup技术就是可以把系统中的所有进程组织成一颗独立的树,每颗树都包含系统所有进程,树的每个节点就是一个进程组,而每颗树又和一个或者多个subsystem关联,树的作用是对进程分组,而subsystem作用是对这些组进行操作。

  • subsystem:一个subsystem就是一个内核模块,它被关联到一颗Cgroup树之后,就会对树的每个节点(进程组)上做具体操作。subsystem也被称为resource controller,因为它主要用来调度和限制每个进程组资源,有时也可以将进程分组只是为了做监控,观察进程组的状态。例如,perf_event subsystem。目前Linux支持12中system,比如限制CPU的使用时间,限制使用内存,统计CPU使用情况,冻结和恢复一组进程等。
  • 下面每个子系统都需要与内核的其它模块配合来完成资源控制,比如对CPU资源的限制是通过进程调度模块根据CPU子系统的配置来完成;对内存资源的限制是内存模块根据memoty子系统的配置来完成,对网络数据包的控制则需要Traffic Control子系统配合完成。
    subsystem 作用
    cpu 主要限制进程CPU使用率
    cpuacct 统计cgroups中进程的cpu使用率
    cpuset 为cgroups中进程分
  • 16
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值