7.2.2 Cgroups 资源限制
Namespace 对各类 Linux 资源(进程、网络、文件、用户...)提供了隔离机制,但还没有解决资源分配的问题。虽然容器之间的资源是隔离的,但如果一个容器应用执行大量计算任务长期占用 CPU,还是会对其他容器应用产生影响。因此,容器技术还需要一种资源管理的机制 - 这就是 Cgroups。
Cgroups 全称是 Control Groups,是 Linux 内核提供的一种可以限制单个或者多个进程多所使用物理资源的机制,可以对 CPU、内存、I/O、网络等资源实现精准的控制。到目前为止,Linux 支持 12 种 subsystem (一个子系统代表一类资源调度控制器),支持如 CPU、blkio、devices、pids、net_cls 等资源控制。 综合 Cgroups 的主要功能如下:
- 资源限制:对进程组使用的资源总额进行限制。
- 优先级分配:通过分配 CPU 时间片与硬盘 I/O,控制进程运行优先级。
- 资源统计: 统计进程、系统实际资源使用量。
- 进程控制:对进程组执行挂起、恢复等操作。