https://www.cnblogs.com/sparkdev/p/8296063.html
What
cgroups(Control Groups) 是 linux 内核提供的一种机制,这种机制可以根据需求把一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源提供一个统一的框架。
Function
为不同的用户层面的资源管理提供一个统一化的接口。
- 资源限制
- 优先级分配
- 资源统计
- 任务控制
Task 任务
Cgroup 控制器
cgroup 表示按某种资源控制标准划分而成的任务组,包含一个或多个子系统。一个任务可加入某一个 cgroup ,也可以从某个 cgroup 迁移到另一个 cgroup 。
Subsystem 子系统
cgroups 中的子系统就是一个资源调度控制器,又叫 controllers 。
#cat /proc/cgroups#subsys_name hierarchy num_cgroups enabledcpuset 7 76 1 // 给 cgroup 中的任务分配独立的 CPU 和 内存点cpu 7 76 1 // 限制 CPU 时间片的分配,与 cpuacct 挂载在同一目录cpuacct 7 76 1 // 生成 cgroup 中的任务占用 CPU 资源的报告,与 cpu 挂载在同一目录blkio 4 72 1 // 对块设备的 IO 进行限制memory 5 129 1 // 对 cgroup 中的任务的可用内存进行限制,并自动生成资源占用报告devices 2 70 1 // 允许或紧张 cgroup 中的任务访问设备freezer 6 24 1 // 暂停/恢复 cgroup 中的任务net_cls 3 24 1 // 使用登记识别符perf_event 8 24 1net_prio 3 24 1hugetlb 10 24 1pids 11 70 1rdma 9 1 1
Hierarchy
层级有一系列 cgroup 以一个树状结构排列而成,每个层级通过绑定对应的子系统进行资源控制。
cgroups 的文件系统接口

tmpfs 说明 /sys/fs/cgroup 目录下的文件都是存在于内存中的临时文件;
/sys/fs/cgroup 目录都是由 systemd 在系统启动的过程中挂载,并且挂载为只读类型。


- cgroup 树 ID,和 /proc/cgroups 文件中的 ID 一一 对应;
- 和 cgroup 树绑定的所有 subsystem ,多个 subsystem 之间用逗号隔开。 name = systemd 表示没有和任何 subsystem 绑定,只是起了个名字叫 systemd
- 进程所属的 cgroup
