现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

cgroup简介与学习方法

2020-02-20 08:41 工业·编程 ⁄ 共 782字 ⁄ 字号 暂无评论

cgroup是control group的简称,称为控制组,主要是为系统用户提供不同类型的资源分配和限制功能,是实现docker的基础。

cgroup主要的功能可以归纳如下

1、资源限制:资源限制主要体现在进程运行过程中所需要的资源,例如cpu使用配额、内存大小、磁盘访问等

2、设置程序的优先级: 程序的执行优先级可以通过对cpu的使用以及I/O带宽的限制

3、系统资源使用统计:统计cpu运行时间,统计内存使用,统计程序wakeup次数等。

4、进程控制:对cpu进行带宽限制,可以控制进程的运行和挂起。

cgroup子系统目前有下列几种:

1. devices 进程范围设备权限

2. cpuset 分配进程可使用的 CPU数和内存节点

3. cpu 控制CPU占有率

4. cpuacct 统计CPU使用情况,例如运行时间,throttled时间

5. memory 限制内存的使用上限

6. freezer 暂停 Cgroup 中的进程

7. net_cls 配合 tc(traffic controller)限制网络带宽

8. net_prio 设置进程的网络流量优先级

9. huge_tlb 限制 HugeTLB 的使用

10. perf_event 允许 Perf 工具基于 Cgroup 分组做性能检测

在学习cgroup的时候,本人认为可以分为如下几个阶段:

1、学会使用它,知道怎么挂载、卸载,怎么创建子系统、怎么设置参数。

2、知道每个子系统参数设置的意义,并能熟练修改并且了解修改后发生的变化

3、分析cgroup框架,分析出cgroup之间错综复杂的调用流程,关键结构体之间是怎么联系起来的

4、结合源码分析各子系统各参数的设置的调用流程,并能说明其是怎么实现资源限制的。

5、熟悉cgroup v1和cgroup v2的区别,对比起优劣,并能对cgroup v2中好的方面进行借鉴和改造。

6、发现cgroup在使用中带来的问题,分析原因并优化之

给我留言

留言无头像?