Cgroup 是 Control group 的简写,是 Linux 内核提供的一种限制所使用物理资源的机制,这些资源主要包括 CPU、内存、blkio。
1.对 CPU 的控制
1)限制 CPU 使用速率
只有在容器运行时才会在系统 CPU 路径下生成目录。
[root@Docker ~]# docker create -it --name aaa centos:latest /bin/bash
[root@Docker ~]# docker start aaa
2)多任务按比例分享 CPU
当多个容器任务运行时,很难计算 CPU 的使用率,为了使容器合理使用 CPU 资源,可以通过 --cpu-shares 选项设置 CPU 按比例共享 CPU 资源,这种方式还可以实现 CPU 使用率的动态调整。
[root@Docker ~]# docker run -itd --name bbb --cpu-shares 1024 centos:latest
3)限制 CPU 内核使用
在 Docker 中可以使用 --cpuset-cpus 选项来使某些程序独享 CPU 内核,以便提高其处理速度。真实的服务器 CPU 有多个内核;而虚拟机里,默认只有一个,内核0。
[root@Docker ~]# cat /proc/cpuinfo
processor : 0 #这行就是CPU的编号的意思,如果有多个CPU ,会有多个这个段
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i5-9300HF CPU @ 2.40GHz
stepping : 13
microcode : 0xc6
cpu MHz : 2400.002
cache size : 8192 KB
---------------------------------