docker运行“--cpus”标志令人困惑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker运行“--cpus”标志令人困惑相关的知识,希望对你有一定的参考价值。

我指的是--cpusdocker run国旗。

文档说明标志中提供的数字是可用CPU数量的数量,我发现这是不真实的。

从文档:

--cpus=0.000    Number of CPUs. Number is a fractional number. 0.000 means no limit.

来自limit resources文档:

--cpus=<value>  Specify how much of the available CPU resources a container can use. For instance, if the host machine has two CPUs and you set --cpus="1.5", the container is guaranteed at most one and a half of the CPUs. This is the equivalent of setting --cpu-period="100000" and --cpu-quota="150000". Available in Docker 1.13 and higher.

我在具有2个cpus的docker容器中尝试了上面的确切内容,这导致docker stats的CPU%使用率为100%(应该是75%)。与以下声明相同的结果:

docker run --cpus 1.5 ...
docker run --cpus=1.5 ...
docker run --cpus="1.5" ...

当我尝试设置值0.5时:

docker run --cpus 0.5 ...

docker stats的CPU资源限制为50%,这不符合docker提供的文档,因为docker stats CPU%的结果应该是25%(2个CPU,0.5个CPU可用,结果占CPU容量的25%)

我试图找出为什么我对文档的看法与我的结果有所不同,可能是我对docker stats的CPU%的错误解释,或者是docker提供的错误文档,在后一种情况下,我可以报告回到Docker。

我在Mac上运行版本Version 18.03.1-ce-mac65 (24312)

答案

docker stat命令显示计算乘以CPU内核数,例如:如果您的主机有4个内核且任何应用程序使用100%CPU,那么docker stats输出就像400%,在您的情况下,它报告正确的值,因为您限制为0.5个核心意味着它1/2核心(1核50%)

以上是关于docker运行“--cpus”标志令人困惑的主要内容,如果未能解决你的问题,请参考以下文章

在 Docker 中混合 cpu-shares 和 cpuset-cpus

Fortran程序中令人困惑的调试错误

可能简单但令人困惑的赋值错误

PyCharm:使用 docker 容器设置 python 解释器,但使用 `--cpuset-cpus`

为啥docker容器更新不稳定?

尝试上传到 Cloudinary 时收到令人困惑的错误