Überlegungen zu Arbeitsspeicher und vCPU für AWS Batch in Amazon EKS - AWS Batch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Überlegungen zu Arbeitsspeicher und vCPU für AWS Batch in Amazon EKS

In AWS Batch auf Amazon EKS können Sie die Ressourcen angeben, die einem Container zur Verfügung gestellt werden. Sie können beispielsweise - requests oder -limitsWerte für vCPU und Arbeitsspeicherressourcen angeben.

Die folgenden Einschränkungen gelten für die Angabe von vCPU-Ressourcen:

  • Es muss mindestens eine vCPU requests oder ein limits Wert angegeben werden.

  • Eine vCPU-Einheit entspricht einem physischen oder virtuellen Kern.

  • Der vCPU-Wert muss in ganzen Zahlen oder in Schritten von 0,25 eingegeben werden.

  • Der kleinste gültige vCPU-Wert ist 0,25.

  • Wenn beide angegeben sind, muss der requests Wert kleiner oder gleich dem limits Wert sein. Auf diese Weise können Sie sowohl weiche als auch harte vCPU-Konfigurationen konfigurieren.

  • vCPU-Werte können nicht im milliCPU angegeben werden. Beispielsweise 100m ist kein gültiger Wert.

  • AWS Batch verwendet den requests Wert für Skalierungsentscheidungen. Wenn kein requests Wert angegeben wird, wird der limits Wert in den requests Wert kopiert.

Im Folgenden sind Einschränkungen für die Angabe von Speicherressourcen aufgeführt:

  • Es muss mindestens ein Speicher requests oder limits Wert angegeben werden.

  • Speicherwerte müssen sich in mebibytes (MiBs) befinden.

  • Wenn beide angegeben sind, muss der requests Wert gleich dem limits Wert sein.

  • AWS Batch verwendet den requests Wert für Skalierungsentscheidungen. Wenn kein requests Wert angegeben ist, wird der limits Wert in den requests Wert kopiert.

Im Folgenden sind Einschränkungen für die Angabe von GPU-Ressourcen aufgeführt:

  • Wenn beide angegeben sind, muss der requests Wert gleich dem limits Wert sein.

  • AWS Batch verwendet den requests Wert für Skalierungsentscheidungen. Wenn kein requests Wert angegeben wird, wird der limits Wert in den requests Wert kopiert.

Beispiel für Auftragsdefinitionen

Im Folgenden AWS Batch in der Amazon-EKS-Auftragsdefinition werden weiche vCPU-Freigaben konfiguriert. Auf diese Weise kann AWS Batch auf Amazon EKS die gesamte vCPU-Kapazität für den Instance-Typ nutzen. Wenn jedoch andere Aufträge ausgeführt werden, wird dem Auftrag ein Maximum von 2 vCPUs zugewiesen. Der Arbeitsspeicher ist auf 2 GB begrenzt.

{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "requests": { "cpu": "2", "memory": "2048Mi" } } } ] } } }

Die folgende AWS Batch in der Amazon-EKS-Auftragsdefinition hat den request Wert 1 und weist dem Auftrag maximal 4 vCPUs zu.

{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "requests": { "cpu": "1" }, "limits": { "cpu": "4", "memory": "2048Mi" } } } ] } } }

Im Folgenden wird AWS Batch in der Amazon-EKS-Auftragsdefinition ein vCPU-limitsWert von 1 und ein limits Speicherwert von 1 GB festgelegt.

{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "limits": { "cpu": "1", "memory": "1024Mi" } } } ] } } }

Wenn einen AWS Batch in Amazon-EKS-Auftrag in einen Amazon-EKS-Pod AWS Batch übersetzt, AWS Batch kopiert denlimits Wert in den requests Wert . Dies ist der Fall, wenn kein requests Wert angegeben ist. Wenn Sie die vorherige Beispielauftragsdefinition einreichen, spec lautet der Pod wie folgt.

apiVersion: v1 kind: Pod ... spec: ... containers: - command: - sleep - 60 image: public.ecr.aws/amazonlinux/amazonlinux:2 resources: limits: cpu: 1 memory: 1024Mi requests: cpu: 1 memory: 1024Mi ...

Knoten-CPU- und Speicherreservierungen

AWS Batch stützt sich auf die Standardlogik der bootstrap.sh Datei für vCPU- und Speicherreservierungen. Weitere Informationen zur -bootstrap.shDatei finden Sie unter bootstrap.sh. Beachten Sie bei der Größe Ihrer vCPU und Speicherressourcen die folgenden Beispiele.

Anmerkung

Wenn keine Instances ausgeführt werden, können sich vCPU- und Speicherreservierungen zunächst auf die AWS Batch Skalierungslogik und die Entscheidungsfindung auswirken. Nachdem die Instances ausgeführt wurden, AWS Batch passt die anfänglichen Zuweisungen an.

Beispiel für eine Knoten-CPU-Reservierung

Der CPU-Reservierungswert wird in Millisekunden berechnet, wobei die Gesamtzahl der vCPUs verwendet wird, die für die Instance verfügbar sind.

vCPU-Nummer Reservierter Prozentsatz
1 6 %
2 1 %
3-4 0.5%
4 und höher 0,25 %

Bei Verwendung der vorhergehenden Werte gilt Folgendes:

  • Der CPU-Reservierungswert für eine c5.large Instance mit 2 vCPUs beträgt 70 m. Dies wird wie folgt berechnet: (1*60) + (1*10) = 70 m .

  • Der CPU-Reservierungswert für eine c5.24xlarge Instance mit 96 vCPUs beträgt 310 m. Dies wird wie folgt berechnet: (1*60) + (1*10) + (2*5) + (92*2.5) = 310 m.

In diesem Beispiel sind 1930 (berechnete 2000–70) Millicore vCPU-Einheiten verfügbar, um Aufträge auf einer c5.large Instance auszuführen. Angenommen, Ihr Auftrag erfordert 2 (2*1000 m) vCPU-Einheiten, der Auftrag passt nicht auf eine einzelne c5.large Instance. Ein Auftrag, für den 1.75 vCPU-Einheiten angepasst werden müssen.

Beispiel für eine Knotenspeicherreservierung

Der Speicherreservierungswert wird wie folgt in Mebibyte berechnet:

  • Die Instance-Kapazität in Mebibyte. Eine 8-GB-Instance beträgt beispielsweise 7.748 MiB.

  • Der kubeReserved Wert. Der kubeReserved Wert ist die Speichermenge, die für System-Daemons reserviert werden soll. Der kubeReserved Wert wird wie folgt berechnet: ((11 * maximale Anzahl von Pods, die vom Instance-Typ unterstützt werden) + 255). Informationen zur maximalen Anzahl von Pods, die von einem Instance-Typ unterstützt werden, finden Sie unter eni-max-pods.txt

  • Der HardEvictionLimit Wert. Wenn der verfügbare Speicher unter den -HardEvictionLimitWert fällt, versucht die Instance, Pods zu bereinigen.

Die Formel zur Berechnung des zuweisbaren Speichers lautet wie folgt: (instance_capacity_in_MiB ) - (11 * (Maximum_number_of_pods ) - 255 - (-HardEvictionLimitWert.)).

Eine Instance c5.large unterstützt bis zu 29 Pods. Bei einer 8-GBc5.large-Instance mit einem HardEvictionLimit Wert von 100 MiB beträgt der zuweisbare Speicher 7074 MiB. Dies wird wie folgt berechnet: (7748 - (11 * 29) -255 -100) = 7074 MiB . In diesem Beispiel passt ein 8.192-MiBAuftrag nicht zu dieser Instance, obwohl es sich um eine 8 gibibyte (GiB)-Instance handelt.

DaemonSets

Beachten Sie DaemonSetsbei der Verwendung von Folgendes:

  • Wenn kein AWS Batch auf Amazon-EKS-Instances ausgeführt wird, DaemonSets kann sich zunächst auf die AWS Batch Skalierungslogik und die Entscheidungsfindung auswirken. weist AWS Batch zunächst 0,5 vCPU-Einheiten und 500 MiB für erwartete zuDaemonSets. Nachdem die Instances ausgeführt wurden, AWS Batch passt die anfänglichen Zuweisungen an.

  • Wenn ein vCPU- oder Speicherlimits DaemonSet definiert, verfügen AWS Batch Amazon-EKS-Aufträge über weniger Ressourcen. Wir empfehlen Ihnen, die Anzahl der DaemonSets, die AWS Batch Aufträgen zugewiesen sind, so gering wie möglich zu halten.