Arbeitsspeicher für Linux-Container-Instances von Amazon ECS reservieren - Amazon Elastic Container Service

Arbeitsspeicher für Linux-Container-Instances von Amazon ECS reservieren

Wenn der Amazon-ECS-Container-Agent eine Container-Instance in einem Cluster registriert, muss der Agent bestimmen, wie viel Arbeitsspeicher die Container-Instance zur Verfügung hat und für Ihre Aufgaben reservieren kann. Aufgrund des Speicher-Overheads der Plattform und des vom System-Kernel belegten Arbeitsspeichers weicht dieser Wert vom Wert des installierten Arbeitsspeichers ab, der für Amazon-EC2-Instances angegeben wird. Eine m4.large-Instance beispielsweise besitzt 8 GiB installierten Speicher. Dies bedeutet jedoch nicht immer, dass genau 8 192 MiB Arbeitsspeicher für Aufgaben zur Verfügung stehen, wenn die Container-Instance registriert wird.

Der Amazon-ECS-Container-Agent stellt eine Konfigurationsvariable namens ECS_RESERVED_MEMORY bereit, mit der Sie eine bestimmte MiB-Menge Arbeitsspeicher aus dem Pool entfernen können, der ihren Aufgaben zugeordnet wird. Damit wird dieser Arbeitsspeicher für wichtige Systemprozesse reserviert.

Wenn Sie den gesamten Arbeitsspeicher auf einer Container-Instance mit Ihren Aufgaben belegen, kann es sein, dass Ihre Aufgabe mit wichtigen Systemprozessen um Arbeitsspeicher konkurrieren und möglicherweise einen Systemfehler auslösen.

Wenn Sie beispielsweise ECS_RESERVED_MEMORY=256 in der Konfigurationsdatei Ihres Container-Agenten angeben, registriert der Agent den gesamten Arbeitsspeicher bis auf 256 MiB für diese Instance, und 256 MiB Arbeitsspeicher können nicht für ECS-Aufgaben zugeordnet werden. Weitere Informationen über die Konfigurationsvariablen des Agenten und ihre Einstellung finden Sie unter Konfiguration des Amazon-ECS-Container-Agenten und Bootstrapping von Amazon-ECS-Linux-Container-Instances zur Weitergabe von Daten.

Wenn Sie 8 192 MiB für die Aufgabe angeben und keine Ihrer Container-Instances 8 192 MiB oder mehr Arbeitsspeicher zur Verfügung haben, um diese Anforderung zu erfüllen, kann die Aufgabe nicht in Ihrem Cluster platziert werden. Wenn Sie eine verwaltete Computing-Umgebung verwenden, muss AWS Batch einen größeren Instance-Typ launchen, um die Anforderung zu erfüllen.

Sie sollten außerdem etwas Arbeitsspeicher für den Amazon-ECS-Container-Agenten und andere wichtige Systemprozesse in Ihren Container-Instances reservieren, sodass die Container für Ihre Aufgaben nicht um denselben Arbeitsspeicher konkurrieren und möglicherweise einen Systemfehler auslösen.

Der Amazon-ECS-Container-Agent verwendet die Docker-Funktion ReadMemInfo() für die Abfrage des gesamten für das Betriebssystem verfügbaren Arbeitsspeichers. Sowohl Linux als auch Windows bieten bietet Befehlszeilen-Hilfsprogramme, um die Gesamtmenge an Arbeitsspeicher zu bestimmen.

Beispiel – Bestimmung des Gesamtspeichers für Linux

Der Befehl free gibt Informationen darüber zurück, wie viel Speicher insgesamt vom Betriebssystem erkannt wird.

$ free -b

Beispielausgabe für eine m4.large-Instance, die das Amazon-ECS-optimierte Amazon Linux-AMI ausführt.

total used free shared buffers cached Mem: 8373026816 348180480 8024846336 90112 25534464 205418496 -/+ buffers/cache: 117227520 8255799296

Diese Instance verfügt über 8373026816 Bytes Gesamtspeicher, und es stehen 7985 MiB für Aufgaben zur Verfügung.

Beispiel – Bestimmung des Gesamtspeichers für Windows

Der Befehl wmic gibt Informationen darüber zurück, wie viel Speicher insgesamt vom Betriebssystem erkannt wird.

C:\> wmic ComputerSystem get TotalPhysicalMemory

Beispielausgabe für eine m4.large-Instance, die das Amazon-ECS-optimierte AMI für Windows Server ausführt.

TotalPhysicalMemory 8589524992

Diese Instance verfügt über 8589524992 Bytes Gesamtspeicher, und es stehen 8191 MiB für Aufgaben zur Verfügung.

Arbeitsspeicher für Container-Instances anzeigen

Sie können mit der Amazon-ECS-Konsole (oder mit dem API-Vorgang DescribeContainerInstances) anzeigen, mit wie viel Arbeitsspeicher eine Container-Instance registriert ist. Wenn Sie versuchen, Ihre Ressourcennutzung zu maximieren, indem Sie Ihren Aufgaben so viel Arbeitsspeicher wie möglich für einen bestimmten Instance-Typ bereitstellen, können Sie den für diese Container-Instance verfügbaren Arbeitsspeicher beobachten und dann Ihren Aufgaben soviel Arbeitsspeicher zuordnen.

So können Sie den Arbeitsspeicher für Container-Instances anzeigen
  1. Öffnen Sie die Konsole unter https://console.aws.amazon.com/ecs/v2.

  2. Wählen Sie im Navigationsbereich Cluster und dann den Cluster aus, der Ihre Container-Instance hostet.

  3. Wählen Sie Infrastruktur und dann unter Container-Instances eine Container-Instance aus.

  4. Der Abschnitt Ressourcen zeigt den registrierten und verfügbaren Arbeitsspeicher für die Container-Instance an.

    Der Registrierte Speicherwert gibt den Wert der Container-Instance an, die beim ersten Start bei Amazon ECS registriert wurde, und der Verfügbare Speicherwert gibt an, was noch nicht den Aufgaben zugeordnet wurde.