Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Was muss ich über die CPU-Zuweisung in Amazon ECS wissen?
Ich möchte Aufgaben in Amazon Elastic Container Service (Amazon ECS) CPU zuweisen, weiß aber nicht, wie ich anfangen soll.
Kurzbeschreibung
Wenn Sie eine Aufgabendefinition in Amazon ECS erstellen, können Sie Grenzwerte für CPU-Ressourcen auf Aufgaben- und Containerebene definieren. Diese Grenzwerte können sich auf die Gesamtleistung Ihres Amazon-ECS-Clusters auswirken. Passen Sie je nach Verhalten von Amazon ECS und Ihrem Anwendungsfall die CPU-Zuweisungswerte auf Aufgaben- und Containerebene an. Ermitteln Sie anhand der folgenden Informationen die CPU-Zuweisung, die Ihren Workload- und Anwendungsanforderungen entspricht.
Behebung
Amazon ECS verwendet eine Standardmaßeinheit für CPU-Ressourcen, die als CPU-Einheiten bezeichnet wird. Beispielsweise entsprechen 1.024 CPU-Einheiten 1 vCPU für Linux, und 2.048 CPU-Einheiten entsprechen 2 vCPUs. Wenn Sie Aufgabendefinitionen definieren, können Sie 1 vCPU anstelle von 1.024 verwenden. Wenn die Aufgabendefinition registriert ist, übersetzt ECS den Wert in Einheiten.
Hinweis: CPU- und Speicherparameter auf Aufgabenebene werden für Windows-Container ignoriert. Für Windows-Container empfiehlt es sich, Ressourcen auf Container-Ebene anzugeben. Weitere Informationen finden Sie unter Aufgabengröße.
CPU-Zuweisung auf Aufgabenebene
Sie können Amazon-ECS-Aufgaben auf AWS-Fargate- oder Amazon Elastic Compute Cloud (Amazon EC2)-Instances ausführen.
Bei Linux-Instances legt der Parameter cpu, den Sie auf Aufgabenebene festlegen, auch die maximal zulässigen CPU-Ressourcen für Aufgaben in diesem Container fest. Die Container, die in dieser Aufgabenkonfiguration ausgeführt werden, können nur die durch die Aufgabengröße definierte CPU-Kapazität verwenden.
AWS Fargate
Für Linux und Windows benötigt AWS Fargate einen cpu-Parameter auf Aufgabenebene, um der Aufgabe die angeforderten Ressourcen zuzuweisen. Sie können memory und cpu aus den vordefinierten Aufgabengrößen auswählen, die für AWS Fargate verfügbar sind.
Amazon EC2
Hinweis: Für Aufgaben, die unter Amazon EC2 Linux ausgeführt werden, ist der Parameter cpu optional.
Wenn Sie den Parameter cpu unter Linux definieren, hat der Parameter die folgenden Grenzwerte:
- Ihre Container haben begrenzten Zugriff, basierend auf der Menge an cpu, die Sie auf Aufgabenebene definieren.
- Der Wert, den Sie in Ihrem Parameter Task cpu definieren, wird zur CPU-Reservierung für die geplante Aufgabe auf einer Container-Instance.
- cpu-Einheiten, die Containern zugewiesen sind, verwenden Linux-CPU-Shares, um die Shares innerhalb der Aufgabe zu implementieren. Die Linux-CPU ist ein gewichteter Mechanismus zur Bestimmung der CPU-Zugriffspriorität.
Im folgenden Beispiel hat ein cpu-Parameter in Amazon EC2 die folgende Definition:
- Eine m5.large-EC2-Instance, die in einem ECS-Cluster als Container-Instance für insgesamt 2.048 CPU-Einheiten registriert ist.
- Eine Aufgabe mit cpu: 1.024, definiert auf Aufgabenebene, wird auf der Instance ausgeführt.
- Die aktuelle EC2-CPUUtilization der Instance liegt bei 68 %.
Im vorherigen Beispiel hat die Konfiguration noch 1.024 CPU-Einheiten in ihrem Pool.
Die aktuelle CPUUtilization hat keinen Einfluss darauf, wie viele CPU-Einheiten in der Container-Instance zur Planung von Aufgaben verfügbar sind. Wenn die Instance mehr als 50 % ihrer Auslastung ausnutzt, steht die Hälfte der Einheiten im Instance-Pool für den Start neuer Aufgaben zur Verfügung. Der Parameter dient als CPU-Reservierung und -Limit, und der Parameter wirkt sich nicht direkt auf die CPU-Auslastung aus.
Mit den vorangegangenen Beispielparametern haben Sie mehrere Konfigurationen, die Sie vornehmen können, wenn Sie nur die CPU berücksichtigen:
- Sie können zwei weitere Aufgaben mit cpu planen: 512, entweder in Definitionen auf Aufgaben- oder Containerebene definiert.
- Sie können eine Aufgabe mit zwei Containern mit cpu planen: 1.024, definiert auf Aufgabenebene und cpu: 512, definiert auf Containerebene. Sie können diese Stufen in jedem der beiden Container festlegen.
- Wenn cpu nicht definiert ist, können Sie so viele Aufgaben planen, wie ECS für den ausgewählten Netzwerkmodus unterstützt. Die CPU-Einheiten, die in Ihrer ECS-Container-Instance für die Planung verfügbar sind, sind nicht betroffen.
CPU-Zuweisung auf Containerebene
cpu-Definitionen auf Containerebene werden bei der Planung und der Laufzeit berücksichtigt, wenn es keine CPU-Konflikte gibt.
Während der Planung
Die folgenden cpu-Definitionen auf Containerebene werden bei der Planung berücksichtigt:
- Wenn die cpu-Definition auf Aufgabenebene nicht festgelegt ist, wird die Gesamtzahl der in Ihren Containern definierten CPU-Einheiten zur CPU-Reservierung.
- Die Gesamtzahl der CPU-Einheiten in Ihrer cpu-Definition auf Container-Ebene darf nicht größer sein als die CPU-Einheiten, die in Ihrer Zuordnung auf Aufgabenebene definiert sind.
Während der Laufzeit, wenn kein CPU-Konflikt besteht
Die folgenden cpu-Definitionen auf Containerebene werden zur Laufzeit berücksichtigt, wenn kein CPU-Konflikt besteht:
- Wenn die cpu-Definition auf Aufgabenebene festgelegt ist, haben Ihre Container nur Zugriff auf cpu-Ressourcen bis zum auf Aufgabenebene definierten cpu-Wert.
- Wenn die cpu-Definition auf Aufgabenebene nicht festgelegt ist, haben die Container in Ihrer Aufgabe Zugriff auf alle CPU-Ressourcen, die in Ihrer Instance verfügbar sind. Die Container können unabhängig von der auf Containerebene festgelegten cpu-Definition auf die Ressourcen zugreifen.
- Wenn Sie Windows verwenden und die cpu auf Aufgabenebene nicht unterstützt wird, sind die Container auf die cpu-Definition auf Containerebene begrenzt.
Hinweis: Auf Windows-Container-Instances wird das CPU-Kontingent als absolutes Kontingent durchgesetzt. Weitere Informationen finden Sie unter Umgebung.
Bei Linux-Container-Instances werden cpu-Definitionen auf Container-Ebene direkt den CpuShares-Parametern zugeordnet. Weitere Informationen finden Sie unter Erstellen einer Container-API auf der Docker-Website.
CPU-Konflikte
CPU-Konflikte treten auf, wenn mehrere Prozesse cpu-Zeit anfordern. Wenn ein CPU-Konflikt auftritt, werden Ihre Container auf die Menge an Ressourcen gedrosselt, die Sie auf Ihrer cpu in der Definition auf Containerebene definieren.
Wichtig: Stellen Sie sicher, dass die Anwendung, die Sie auf ECS ausführen, containerfähig ist. Einige Anwendungen wie Java 10 sind containerfähig und verwenden nur die in der cpu-Definition auf Containerebene definierten Grenzwerte. Diese Anwendungen verwenden die Definition auf Containerebene auch dann, wenn es zu CPU-Konflikten kommt.
Ähnliche Informationen
Ähnliche Videos


Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 4 Monaten