Cgroups功能
control groups简称Cgroups,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。最初由google的工程师提出,后来被整合进Linux内核。Cgroups也是LXC为实现虚拟化所使用的资源管理手段,可以说没有cgroups就没有LXC。
cgroups 用来对一组进程所占用的资源做限制、统计、隔离。
限制进程组可以使用的资源数量(Resource limiting )
进程组的优先级控制(Prioritization )
记录进程组使用的资源数量(Accounting )
进程组隔离(Isolation)
cgroups为每种可以控制的资源定义了一个子系统。
subsystem 又由以下几个资源控制模块构成:
cpu 子系统,主要限制进程的 cpu 使用率。
cpuacct 子系统,可以统计 cgroups 中的进程的 cpu 使用报告。
cpuset 子系统,可以为 cgroups 中的进程分配单独的 cpu 节点或者内存节点。
memory 子系统,可以限制进程的 memory 使用量。
blkio 子系统,可以限制进程的块设备 io。
devices 子系统,可以控制进程能够访问某些设备。
net_cls 子系统,可以标记 cgroups 中进程的网络数据包,然后可以使用 tc 模块(traffic control)对数据包进行控制。
freezer 子系统,可以挂起或者恢复 cgroups 中的进程。
ns 子系统,可以使不同 cgroups 下面的进程使用不同的 namespace。
cgroup 是对进程分组管理的一种机制,一个 cgroup 包含一组进程,并可以在这个 cgroup 上增加 Linux subsystem 的各种参数配置,将一组进程和一组 subsystem
的系统参数关联起来。
Cgroups 整体由 3 个组件构成:
cgroup
:实际管理和控制进程的实体subsystem
:每个子系统专门用于控制一种类型的系统资源hierarchy
: 描述 cgroup 的组织形式
最后编辑:SteveChen 更新时间:2025-05-10 00:04