Docker容器CPU分配

时间:2015-10-29 19:36:55

标签: docker

我创建了一个容器:

docker run -c=20 -i -t  ubuntu:latest /bin/bash

我尝试使用-c标志来控制CPU使用率并将其最大化50%。当我在容器内运行md5sum /dev/urandom时,它会占用主机中100%的CPU。

3 个答案:

答案 0 :(得分:7)

-c命令的docker run标志修改了容器相对于所有其他正在运行的容器的权重的CPU份额权重。

它不限制容器从主机使用CPU。

您可以使用--cpu-quota标志来限制CPU使用率,例如:

$ docker run -ti  --cpu-quota=50000 ubuntu:latest /bin/bash

--cpu-quota通常与--cpu-period一起使用。请参阅Docker运行参考文档的更多详细信息:

https://docs.docker.com/reference/run/#runtime-constraints-on-resources

答案 1 :(得分:6)

您似乎正在运行单个容器,因此这是预期的结果。

您可能会发现this博文有用。

  

默认情况下,每个新容器都有1024个CPU份额。这个   当谈到它时,价值并不意味着什么。但是,如果我们   启动两个容器,两者都将使用100%CPU,CPU时间将是   两个容器之间平均分配,因为它们都有   相同的CPU份额(为简单起见,我假设没有   其他进程正在运行。)

答案 2 :(得分:0)

看看这里,这显然是你在寻找的东西:

https://docs.docker.com/engine/reference/run/#cpu-period-constraint

默认CPU CFS(完全公平调度程序)周期为100毫秒。我们可以使用--cpu-period来设置CPU的周期来限制容器的CPU使用率。通常--cpu-period应该使用--cpu-quota。

示例:

$ docker run -it --cpu-period=50000 --cpu-quota=25000 ubuntu:14.04 /bin/bash

如果有1个CPU,这意味着容器每50ms可以获得50%的CPU运行时间。

期间和配额定义:

在 每给定“句号”(微秒),一组只允许消费 “配额”微秒的CPU时间。当CPU带宽消耗一个 组超过此限制(对于该期间),属于其的任务 层次结构将被限制,并且不允许再次运行 周期。