我想使用以下资源分配运行两个容器:
如果我以这种方式运行这两个容器:
docker run -d --name='C1' --cpu-shares=20 --cpuset-cpus="1,2" progrium/stress --cpu 2
docker run -d --name='C2' --cpu-shares=80 --cpuset-cpus="2,3" progrium/stress --cpu 2
我认为C1取c 100的100%作为预期,但50%的cpu2(而不是20%),C2取c 100预期的100%和cpu2的50%(而不是80%)。
看起来像--cpu-shares选项被忽略了。 有没有办法获得我正在寻找的行为?
答案 0 :(得分:1)
docker run提到参数为:
--cpu-shares=0 CPU shares (relative weight)
contrib/completion/zsh/_docker#L452
包括:
"($help)--cpu-shares=[CPU shares (relative weight)]:CPU shares:(0 10 100 200 500 800 1000)"
所以这些值不是基于%的。
OP提及--cpu-shares=20/80
适用于以下Cpuset constraints:
docker run -ti --cpuset-cpus="0,1" C1 # instead of 1,2
docker run -ti --cpuset-cpus="3,4" C2 # instead of 2,3
(这些值为validated/checked only since docker 1.9.1 with PR 16159)
注意:还有CPU quota constraint:
--cpu-quota
标志限制容器的CPU使用率。默认的0值允许容器占用100%的CPU资源(1个CPU)。