2016-01-08 10 views
5

Chciałbym uruchomić dwa pojemniki z poniższej alokacji zasobów:Mieszanie CPU-akcje i cpuset procesorach w Döcker

  • Kontener "C1": zastrzeżone CPU1, wspólne CPU2 z 20 CPU-akcji
  • kontener "C2": zastrzeżone cpu3, ​​wspólne CPU2 z 80 CPU akcji

Jeśli uruchomię dwa pojemniki w następujący sposób:

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 

Mam, że C1 przyjmuje 100% cpu1 zgodnie z oczekiwaniami, ale 50% cpu2 (zamiast 20%), C2 przyjmuje 100% cpu3 zgodnie z oczekiwaniami i 50% cpu2 (zamiast 80%).

Wygląda na to, że opcja --cpu-shares jest ignorowana. Czy istnieje sposób na uzyskanie zachowania, którego szukam?

Odpowiedz

1

docker run wspomina, że ​​jako parametr:

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

I contrib/completion/zsh/_docker#L452 obejmuje:

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

więc te wartości nie są% -na.

PO wymienia --cpu-shares=20/80 współpracuje z następującymi 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 

(te wartości są validated/checked only since docker 1.9.1 with PR 16159)

Uwaga: istnieje również CPU quota constraint:

--cpu-quota flag ogranicza kontenera Użycie procesora. Domyślna wartość 0 pozwala kontenerowi na pobranie 100% zasobów procesora (1 procesor).

+0

Wiem, użyłem 20 i 80, aby uprościć scenariusz. Ponieważ mam tylko dwa pojemniki, które wymagają zarówno 100% cpu (stresu) z udziałami ustawionymi na 20 i 80, powinny działać odpowiednio na poziomie 20% i 80% na współużytkowanym procesorze (cpu2). Oczywiście mogłem użyć czegoś takiego jak 4 i 16 lub 80 i 320. –

+0

Nie, chodzi mi o to, że te wartości mogą nie zostać rozpoznane. Spróbuj 200 i 800, aby sprawdzić, czy to działa lepiej. – VonC

+0

Nie, to nie działa lepiej, to jest to samo. –