cgroup介绍之为什么需要了解cgroup

≡放荡痞女 提交于 2020-01-07 08:39:31

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

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

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

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

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

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

cgroup支持的子系统

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这三种子系统,并对其进行了较为深入的分析。

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

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

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

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

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

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

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

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!