Linux cgroups是Linux内核中的一项强大功能,允许用户对进程进行**资源限制、优先级控制、监控和隔离。它主要用于管理和控制计算资源的分配,特别是在容器技术(如 Docker 和 LXC)中得到了广泛应用。
1. Cgroups的基本概念和原理
1.1 资源控制和管理
cgroups的基本功能是将一组进程划分为一个组(控制组),并对这个组分配特定的资源。这些资源主要包括:
- CPU(处理器时间)
- 内存(RAM 和 swap 空间)
- I/O(磁盘和网络带宽)
- 进程数(控制同时运行的进程/线程数量)
- 设备访问控制(控制进程可以访问的设备)
每个cgroup可以对进程的这些资源进行限制和控制,内核会根据cgroup的配置在运行时对资源进行调度。
1.2 cgroup 的层次结构
cgroups具有层次结构,类似于文件系统的层次树。每个cgroup可以包含多个子cgroup,资源控制是自上而下继承的:
- 根cgroup:系统的默认组,包含所有进程。
- 子cgroup:可以从根cgroup创建子控制组,并继承上层组的资源限制。
进程可以分配到任何层次的cgroup中,每个子