2016-01-08 17 views
5

würde Ich mag zwei Container mit der folgenden Ressourcenzuordnung auszuführen:Mixing cpu-Aktien und CPU-Satz-CPUs in Docker

  • Container "C1": reserviert cpu1, gemeinsamer cpu2 mit 20 cpu-shares
  • Container "C2": reserviert CPU3, gemeinsamer cpu2 mit 80 CPU-Aktien

Wenn ich die beiden Behälter auf diese Weise auszuführen:

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 

Ich habe, dass C1 100% von cpu1 wie erwartet nimmt, aber 50% von cpu2 (statt 20%), C2 nimmt 100% von cpu3 wie erwartet und 50% von cpu2 (anstelle von 80%).

Es sieht so aus, als ob die Option --cpu-shares ignoriert wird. Gibt es eine Möglichkeit, das von mir gesuchte Verhalten zu erhalten?

Antwort

1

docker run erwähnt, dass Parameter wie:

--cpu-shares=0    CPU shares (relative weight) 

Und contrib/completion/zsh/_docker#L452 umfasst:

"($help)--cpu-shares=[CPU shares (relative weight)]:CPU shares:(0 10 100 200 500 800 1000)" 

So sind diese Werte nicht% -Basis.

Die OP erwähnt --cpu-shares=20/80 arbeitet mit folgenden 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 

(diese Werte sind validated/checked only since docker 1.9.1 with PR 16159)

Hinweis: Es gibt auch CPU quota constraint:

Die --cpu-quota Flagge begrenzt die Behälter CPU auslastung. Der Standardwert 0 ermöglicht dem Container, 100% einer CPU-Ressource (1 CPU) zu übernehmen.

+0

Ich weiß, ich habe 20 und 80 verwendet, um das Szenario zu vereinfachen. Da ich nur zwei Container habe, die beide 100% CPU (Stress) mit den Shares 20 und 80 benötigen, sollten sie bei 20% bzw. 80% auf der gemeinsamen CPU (cpu2) laufen. Natürlich hätte ich etwas wie 4 und 16 oder 80 und 320 verwenden können. –

+0

Nein, ich meine, diese Werte werden möglicherweise nicht erkannt. Versuchen Sie 200 und 800, um zu sehen, ob das besser funktioniert. – VonC

+0

Nein, es funktioniert nicht besser, es ist das gleiche. –