5

次のリソース割り当てで 2 つのコンテナーを実行したいと考えています。

  • コンテナー「C1」: 予約済みの cpu1、20 個の cpu シェアを持つ共有 cpu2
  • コンテナー「C2」: 予約済みの cpu3、80 個の cpu シェアを持つ共有 cpu2

この方法で 2 つのコンテナーを実行すると、次のようになります。

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 は予想どおり cpu1 の 100% を使用しますが、cpu2 の 50% (20% ではなく) を使用し、C2 は cpu3 の 100% を使用し、cpu2 の 50% (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 では、コンテナーは CPU リソース (1 CPU) の 100% を使用できます。

于 2016-01-08T11:45:00.387 に答える