Linux CGroup
前面我们已经讲了Docker的基础技术——Linux Namespace,我们知道了使用namespace可以将进程的环境(包括UTS、Mount、PID
IPC、Network、User)进行隔离,但是仅仅使用namespace并不能真正意义上实现我们想要的隔离,例如进程使用的内存、存储、IO设备并不会受到任何限制。因此,为了对进程使用资源进行相应的限制,我们引出了本文将要介绍的主角——Linux CGroup。
概念
Linux CGroup,全称是Linux Control
Group(Linux控制组),是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。
使用Linux CGroup,我们可以创建控制组,并且将我们想要进行资源限制的进程或者进程组加入到该group中,同时定义该控制组的一种或者多种资源的限制,如对CPU时间、IO存取速度、允许或者禁止使用块设备等等进行对应的限制。
CGroup提供了以下的功能:
- Resource limitation: 限制资源使用,比如内存使用上限以及文件系统的缓存限制。
- Prioritization: 优先级控制,比如:CPU利用和磁盘IO吞吐。