问题

Docker是怎么限制容器CPU的?当容器设置--cpus=1时,是限制容器只能使用某一个CPU吗?那当cpus配置为小数时,又是怎么限制的?

实践

步骤:

  1. 在一台有4个CPU的主机上创建容器时,通过--cpus=2限制容器最多可以使用主机上的2个CPU。
  2. 通过stress命令创建4个繁忙的进程消耗CPU资源,通过docker stats命令可以看到容器CPU的负载为200%,即单个CPU负载的两倍。
  3. 在主机上通过top命令,可以看到主机上的CPU使用情况是:4个CPU都是50%

结论

Docker限制容器使用CPU,实际上限制的是使用CPU的时间片,内核通过进程消耗的CPU时间片来统计出进程占用CPU的百分比。
另外:Docker支持通过--cpuset-cpus指定固定的CPU。

参考
Docker: 限制容器可用的 CPU

noname
314 声望49 粉丝

一只菜狗