CGroup系列一CGroup简介
Posted 高桐@BILL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CGroup系列一CGroup简介相关的知识,希望对你有一定的参考价值。
写在前面
CGroup,Control Group,是Linux Kernel对物理资源进行管控配置的一种机制,该机制允许聚集或分割进程集,包括他们将来所有的子任务到一个层级中,并附加指定的规则到该层级。
CGroup包含多个子系统(如CPU,Memory,IO等),我们可以根据需要按照预先配置的一定规则对其子系统进行合理管控分配,以达到系统资源的精细化管理。因为硬件资源永远是有限的的,对于一些上游厂商来说都是真金白银,更不用说当前缺芯的大背景下,资源都要用在刀刃上。
本质上,CGroup就是内核附加在程序上的一系列钩子(Hook)。它,我们可以监控系统资源的使用情况,按照一定优先级顺序精细化分配资源,,拒绝指定进程或服务访问系统资源或者有限访问系统资源,以提高系统资源使用效率。这种管理甚至可以发生在系统运行时,也就是说我们可以动态配置CGroup规则。
使用场景案例
术语
-
层级 Hierarchy,又称CGroup树
-
子系统 Subsystem,又称CGroup控制器
-
控制组 CGroup Group ,将多个进程,或任务进行分组管理。
一、CGroup子系统介绍
1.1CGroup V1
1.1.1 blkio - Block IO Controller
这个子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB 等等)。
1.1.2 hugetlb - HugeTLB Controller
该子系统允许限制大页(Huge Page)的使用,huge page常常通过共享内存mamp和shget进行申请。
1.1.3 cpuacct - CPU Accounting Controller
该子系统会自动生成cgroup中任务所使用的CPU报告。
1.1.4 cpuset - CPUSETS
该子系统通过调度程序来管理cgroup中任务对CPU访问。并为 cgroup 中的任务分配独立 PU(在多核系统)和内存节点。
1.1.5 devices - Device Whitelist Controller
该子系统可允许或者拒绝cgroup 的任务对指定设备的访问。
1.1.6 freezer - CGroup Freezer
该子系统会挂起或者恢复cgroup中的任务。
1.1.7 memory - Memory Resource Controller(Memcg) Implementation Memo && Memory Resource Controller
该子系统设定会对cgroup 中任务使用内存进行限制,并自动生成由那些任务使用的内存资源报告。
1.1.8 net_cls - Network classifier cgroup
该子系统使用等级识别符(classid)标记网络数据包,可允许 Linux 流量控制程序(tc)识别从具体 cgroup 中生成的数据包。
1.1.9 net_prio - Network priority cgroup
该子系统提供了一种方法可以动态的设置每个网络接口的网络流量优先级。
1.1.10 process - Process Number Controller
该子系统允许一个层级停止新任务的创建(fork)和克隆(clone)。
1.1.11 misc - Miscellaneous controller
该子系统为除了其他可以抽象之外的资源提供了资源限制和追踪机制。
1.2 CGroup V2
1.2.1 CPU
该子系统提供了对CPU时钟周期的管控。它实现了对CPU访问权重控制和绝对的带宽限制。
1.2.2 Memory
同上
1.2.3 IO
同上
1.2.4 PID
同上
1.2.5 Cpuset
同上
1.2.6 Device controller
同上
1.2.7 RDAM
该子系统提供了对RDMA资源的分配和统计能力。
1.2.8 HugeTLB
同上
1.2.9 Misc
同上
1.2.10 perf_event
该子系统可以识别任务的cgroup信息,并被用以性能分析。
1.2.11 ns
命名空间子系统
二、如何查询当前系统支持的子系统?
2.1 cgroup-bin
cgroup-bin(ubuntu)
2.2 /sys/fs/cgroup
也可以通过下面这种方式,前提是所有子系统已经被系统挂载;
2.3 /proc/cgroups
2.4 lssubsys
以上是关于CGroup系列一CGroup简介的主要内容,如果未能解决你的问题,请参考以下文章