Was bedeutet der Parameter 'cpu' im aws container service?

7

Ich werde eine neue Aufgabe im Container-Service für t2.medium registrieren. Ich sah Beispiele, in denen CPU-Parameter gleich 0 ist. Ich versuche herauszufinden, was es ist und wie viele ich hier für eine Aufgabe einsetzen muss.

Alles, was ich nach dieser Frage finden konnte: Ссылка Ссылка

    
nightmare 17.11.2016, 14:06
quelle

1 Antwort

23
  

"Die Anzahl der CPU-Einheiten, die für den Container reserviert werden sollen. Ein Container   Instanz hat 1.024 CPU-Einheiten für jeden CPU-Kern. Dieser Parameter   gibt die Mindestmenge an CPU an, die für einen Container reserviert werden muss, und   Container teilen nicht zugeordnete CPU - Einheiten mit anderen Containern auf der   Instanz mit dem gleichen Verhältnis wie ihre zugewiesene Menge. Dieser Parameter   Zu CpuShares im Abschnitt Einen Container des Docker erstellen   Die Remote-API und die Option --cpu-shares für den Andockvorgang werden ausgeführt. "

Ein t2.medium hat 2 vCPUs, so dass es 2.048 verfügbare CPU-Einheiten zum Planen gibt. Wenn Sie nur einen einzigen Container auf dem Host ausführen möchten, können Sie alle 2.048 CPU-Einheiten einplanen, aber keine anderen Container werden jemals auf diesem Host platziert.

Container haben immer die Garantie, dass sie mindestens ihre budgetierte CPU bekommen, wenn sie sie brauchen . Außerdem ist es bei CPU-Einheiten eine nette Sache, dass ein Container über seine zugewiesenen Einheiten platzen kann, wenn keine anderen Container die Ressource belegen. Wenn Sie beispielsweise zwei Tasks auf einem t2.medium mit jeweils 1.024 budgetierten CPU-Einheiten ausführen, könnte jede Task einzeln bis zu 2.048 Bursts ausführen, da die andere Task vollständig inaktiv war. Wenn Sie beginnen, Hosts auf diese Weise zu teilen, können Sie die Kosteneinsparungen durch die Verwendung von ECS deutlich reduzieren.

Zusätzlich, wenn nicht alle CPU-Einheiten budgetiert sind, teilt ECS automatisch die verbleibenden CPU-Einheiten für jeden Container im Verhältnis ihrer budgetierten CPU-Einheiten auf. Wenn also zwei Aufgaben auf einem t2.medium mit jeweils 0 CPU-Einheiten ausgeführt werden, erhält jeder Container effektiv 1.024 CPU-Einheiten, da kein anderer Container sie reserviert hat.

Eine Sache, die hier zu beachten ist, ist, dass das Gedächtnis etwas anders funktioniert; Es ist eine harte Grenze. Wenn der Container versucht, mehr Arbeitsspeicher zuzuweisen als geplant, wird der Task / Container beendet. Sie können CPU-Einheiten unterversorgen und kommen normalerweise damit davon (weil Container über ihre Bereitstellung platzen können), aber Sie müssen sicherstellen, dass Sie innerhalb Ihrer Speicherbeschränkungen bleiben.

Beispiel: Wenn Sie ihn auf 0 setzen, wird eine anteilige Menge der nicht reservierten CPU benötigt. Angenommen, diese Szenarien befinden sich auf t2.medium mit 2.048 CPU-Einheiten:

Aufgabe # 1 - 0 CPU-Einheiten, Aufgabe 2 - 0 CPU-Einheiten: In dieser Situation werden sowohl Task # 1 als auch Task # 2 1.024 CPU-Einheiten zugewiesen, da 2.048 nicht reservierte Einheiten vorhanden sind. Da die Aufgaben 1: 1 für Reservierungen von CPU-Einheiten sind, erhalten beide einen gleichen Anteil der verfügbaren CPU-Einheiten.

Aufgabe # 1 - 0 CPU-Einheiten, Aufgabe 2 - 1.024 CPU-Einheiten: Aufgabe Nr. 2 erhält 2.048 CPU-Einheiten und Aufgabe Nr. 1 erhält 0, da versucht wird, 1.024 ungenutzte CPU-Einheiten in einem Verhältnis von 0: 1.024 aufzuteilen.

Aufgabe # 1 - 0 CPU-Einheiten: Wenn sich nur eine Aufgabe auf der Maschine befindet, erhält sie alle 2.048 CPU-Einheiten, da alle Einheiten unbenutzt sind. Sie werden unter den Containern in einem Verhältnis ihrer Reservierung aufgeteilt.

    
louahola 17.11.2016, 14:22
quelle