Docker中利用namespace来做权限控制,用cgroups来做资源控制,这两个都是非常重要的,下面是整理了一些关于cgroups相关的。
cgroups全称control groups ,是Linux内核提供的一种机制,用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等)。
cgroups最初的目标是为资源管理提供的一个统一的框架,即整合现有的cpuset等子系统,也为未来开发新的子系统提供接口。现在的cgroups适用于多种应用场景,从单个进程的资源控制,到实现操作系统层次的虚拟化,cgroups提供了以下功能:
- 限制进程组可以使用的资源数量(Resource limiting)。
- 进程组的优先级控制(Prioritization)。
- 记录进程组使用的资源数量(Accounting)。
- 进程组隔离(lsolation)。
- 进程控制组(control)。
cgroup的API以一个伪文件系统的方式实现,即用户可以通过文件操作实现cgroup的组织管理。
cgroup 的组织管理操作单元可以细粒度到线程级别,用户态代码也可以针对系统分配的资源创建和销毁cgroup,从而实现资源再分配和管理。
所有资源管理的功能都以subsystem(子系统)的方式实现。