control groups简称Cgroups,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。最初由google的工程师提出,后来被整合进Linux内核。Cgroups也是LXC为实现虚拟化所使用的资源管理手段,可以说没有cgroups就没有LXC。

cgroups 用来对一组进程所占用的资源做限制、统计、隔离。

限制进程组可以使用的资源数量(Resource limiting )
进程组的优先级控制(Prioritization )
记录进程组使用的资源数量(Accounting )
进程组隔离(Isolation)

 

cgroups为每种可以控制的资源定义了一个子系统。
subsystem 又由以下几个资源控制模块构成:

  1. cpu 子系统,主要限制进程的 cpu 使用率。

  2. cpuacct 子系统,可以统计 cgroups 中的进程的 cpu 使用报告。

  3. cpuset 子系统,可以为 cgroups 中的进程分配单独的 cpu 节点或者内存节点。

  4. memory 子系统,可以限制进程的 memory 使用量。

  5. blkio 子系统,可以限制进程的块设备 io。

  6. devices 子系统,可以控制进程能够访问某些设备。

  7. net_cls 子系统,可以标记 cgroups 中进程的网络数据包,然后可以使用 tc 模块(traffic control)对数据包进行控制。

  8. freezer 子系统,可以挂起或者恢复 cgroups 中的进程。

  9. ns 子系统,可以使不同 cgroups 下面的进程使用不同的 namespace。

cgroup 是对进程分组管理的一种机制,一个 cgroup 包含一组进程,并可以在这个 cgroup 上增加 Linux subsystem 的各种参数配置,将一组进程和一组 subsystem 的系统参数关联起来。
Cgroups 整体由 3 个组件构成:

  1. cgroup:实际管理和控制进程的实体

  2. subsystem:每个子系统专门用于控制一种类型的系统资源

  3. hierarchy: 描述 cgroup 的组织形式

作者:SteveChen  创建时间:2025-05-09 23:54
最后编辑:SteveChen  更新时间:2025-05-10 00:04
上一篇:
下一篇: