cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,可以对 cpu,内存等资源实现精细化的控制。
cgroups子系统
cpu
**子系统,控制cpu的使用率cpuacct
**子系统,统计cgroups中的进程的cpu使用报告cpuset
**子系统,为cgroups中的进程分配单独的cpu节点或者内存节点memory
**子系统,限制进程的内存使用量blkio
子系统,限制进程的块设备的io。 overlay blkio.devices
**子系统,限制进程能够访问那些设备。net_cls
**子系统,标记cgroups中进程的网络数据包,然后可以使用traffic control对数据包进行控制。freezer
**子系统,可以挂起或者恢复cgroups中的进程。ns
**子系统,让不同cgroups下面的进程使用不同的namespace。cgroups层级结构(hierarchy)
内核使用 cgroup 结构体来表示一个 control group 对某一个或者某几个 cgroups 子系统的资源限制。cgroup 结构体可以组织成一颗树的形式,每一棵cgroup 结构体组成的树称之为一个 cgroups 层级结构。cgroups层级结构可以 attach 一个或者几个 cgroups 子系统,当前层级结构可以对其 attach 的 cgroups 子系统进行资源的限制。每一个 cgroups 子系统只能被 attach 到一个 cpu 层级结构中。
task 任务就是系统中一个进程。
子系统与层级的关系