1、CGroup 简介
2006 年,Google 工程师在开源社区发起了一个用来管理和限制进程资源使用的项目,名为“process containers”,2007 年,Linux 内核团队将其改名为 cgroup 纳入到 Linux 内核 feature 项目中。在 2008 年 1 月发布的 Linux 2.6.24,这一功能被合并到了内核中。到 Linux 4.5 版本内核,CGroup v2 被合并到内核,这是一次在使用方式上的重大更新。
CGroup 一般也被称为“cgroups”,是 control groups 的简称。
CGroup 机制的功能就是对 linux 的一组进程进行包括 CPU、内存、磁盘 IO、网络等在内的资源使用进行限制、管理和隔离。
CGroup 的主要功能有:
- 限制资源的使用,如划定内存、cpu、磁盘I/O资源的使用上限,对文件系统的缓存进行限制等;
- 优先级控制,如让进程以低优先级被 CPU 调度等;
- 审计和监控统计,例如统计 CPU 使用的比例等;
- 挂起进程和恢复进程执行;
- 资源隔离,将不同进程组的资源使用情况隔离开,防止一个进程组的资源消耗影响到另一个
2、CGroup 层次结构
cgroup 采用层次结构(hierarchy),通过将节点组织成树状结构来管理资源。每个节点称为一个 cgroup,根节点为系统的初始 cgroup。每个 cgroup 可以包含若干子 cgroup,这样便于对进程进行分层管理。