5

我想运行两个具有以下资源分配的容器:

  • 容器“C1”:保留 cpu1,与 20 个 cpu-shares 共享 cpu2
  • 容器“C2”:保留 cpu3,共享 cpu2 与 80 cpu-shares

如果我以这种方式运行这两个容器:

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按预期占用100%的cpu1,但占cpu2的50%(而不是20%),C2按预期占用100%的cpu3和50%的cpu2(而不是80%)。

看起来 --cpu-shares 选项被忽略了。有没有办法获得我正在寻找的行为?

4

1 回答 1

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 约束

 docker run -ti --cpuset-cpus="0,1" C1 # instead of 1,2
 docker run -ti --cpuset-cpus="3,4" C2 # instead of 2,3

(这些值仅从带有 PR 16159 的 docker 1.9.1 开始验证/检查

注意:还有CPU 配额限制

--cpu-quota标志限制容器的 CPU 使用率。默认值 0 允许容器占用 100% 的 CPU 资源(1 个 CPU)。

于 2016-01-08T11:45:00.387 回答