Amazon EBS-Volume-Leistung auf Linux-Instances - Amazon Elastic Compute Cloud

Amazon EBS-Volume-Leistung auf Linux-Instances

Mehrere Faktoren, einschließlich E/A-Merkmalen und der Konfiguration von Instances und Volumes, können sich auf die Leistung von Amazon EBS auswirken. Kunden, die die Anweisungen auf den Produktdetailseiten zu Amazon EBS und Amazon EC2 befolgen, erzielen meistens sofort eine gute Leistung. Es gibt jedoch einige Fälle, in denen Sie ggf. eine Optimierung vornehmen müssen, um auf der Plattform eine Spitzenleistung zu erzielen. In diesem Thema werden allgemeine bewährte Methoden sowie die spezifische Leistungsoptimierung für bestimmte Anwendungsfälle erläutert. Wir empfehlen Ihnen, die Leistung anhand von Informationen aus Ihrer tatsächlichen Workload zu optimieren und mithilfe von Benchmark-Tests die optimale Konfiguration zu finden. Nachdem Sie sich mit den Grundlagen zum Verwenden von EBS-Volumes vertraut gemacht haben, sollten Sie die erforderliche E/A-Leistung ermitteln. Prüfen Sie dann, wie Sie die Amazon EBS-Leistung erhöhen können, um diese Anforderungen zu erfüllen.

AWS-Aktualisierungen der Leistung von EBS-Volumes wirken sich möglicherweise nicht sofort auf Ihre vorhanden Volumes aus. Zum Anzeigen der vollen Leistung eines älteren Volumes müssen Sie zunächst eine ModifyVolume-Aktion darauf ausführen. Weitere Informationen finden Sie unter Ändern von Größe, IOPS oder Typ eines EBS-Volumes unter Linux.

Tipps zur Amazon EBS-Leistung

Diese Tipps stellen die bewährten Methoden dar, um in einer Vielzahl von Benutzerszenarien die optimale Leistung für EBS-Volumes zu erzielen.

Verwenden von EBS-optimierten Instances

Auf Instances, die den EBS-optimierten Durchsatz nicht unterstützen, kann der Netzwerkverkehr mit dem Datenverkehr zwischen Ihrer Instance und Ihren EBS-Volumes konkurrieren. Auf EBS-optimierten Instances werden die beiden Datenverkehrsarten voneinander getrennt. Für einige EBS-optimierte Instance-Konfigurationen können zusätzliche Kosten anfallen (beispielsweise C3, R3 und M3), während andere ohne Aufpreis EBS-optimiert sind (beispielsweise M4, C4, C5 und D2). Weitere Informationen finden Sie unter Amazon EBS–optimierte Instances.

Informationen zum Berechnen der Leistung

Wenn Sie die Leistung Ihrer EBS-Volumes messen, sollten Sie die verwendeten Maßeinheiten kennen und wissen, wie die Leistung berechnet wird. Weitere Informationen finden Sie unter E/A-Merkmale und Überwachung.

Informationen zum Workload

Es gibt einen Zusammenhang zwischen der maximalen Leistung der EBS-Volumes, der Größe und Anzahl von E/A-Operationen und der Zeit, die zum Abschließen der einzelnen Aktionen notwendig ist. Jeder dieser Faktoren (Leistung, E/A und Latenz) wirkt sich auf die anderen aus und die verschiedenen Anwendungen reagieren unterschiedlich empfindlich auf die einzelnen Faktoren. Weitere Informationen finden Sie unter Durchführen von Benchmark-Tests für EBS-Volumes.

Berücksichtigen der Leistungseinbußen, die beim Initialisieren von Volumes aus Snapshots auftreten

Die Latenz steigt erheblich an, wenn Sie zuerst auf jeden Datenblock in einem neuen EBS-Volume zugreifen, das aus einem Snapshot erstellt wurde. Sie können diesen Leistungseinbruch mit einer der folgenden Optionen vermeiden:

  • Greifen Sie auf jeden Block zu, bevor Sie das Volumen in die Produktion bringen. Dieser Prozess heißt Initialisierung (früher als "Vorwärmung" bezeichnet). Weitere Informationen finden Sie unter Initialisieren von Amazon EBS-Volumes.

  • Aktivieren Sie die schnelle Snapshot-Wiederherstellung für einen Snapshot, um sicherzustellen, dass die daraus erstellten EBS-Volumes bei der Erstellung vollständig initialisiert werden und sofort die gesamte bereitgestellte Leistung erbringen. Weitere Informationen finden Sie unter Schnelle Amazon EBS-Snapshot-Wiederherstellung.

Faktoren, die die HDD-Leistung beeinträchtigen können

Wenn Sie einen Snapshot eines Volumes vom Typ Throughput Optimized HDD (st1) oder Cold HDD (sc1) erstellen, kann die Leistung bis auf den Basiswert des Volumes abfallen, während ein Snapshot generiert wird. Dieses Verhalten ist für diese Volume-Typen spezifisch. Auch andere Faktoren wirken sich auf die Leistung aus, etwa das Generieren von mehr Durchsatz, als die Instance unterstützen kann, die Leistungseinbußen beim Initialisieren von Volumes, die aus einem Snapshot erstellt werden, und zu viele kleine, zufällige E/A-Operationen auf dem Volume. Weitere Informationen zum Berechnen des Durchsatzes für HDD-Volumes finden Sie unter Amazon EBS-Volume-Typen.

Die Leistung kann auch beeinträchtigt werden, wenn Ihre Anwendung nicht genügend E/A-Anforderungen sendet. Dies können Sie feststellen, indem Sie sich die Warteschlangenlänge und die E/A-Größe ansehen. Die Warteschlangenlänge ist die Anzahl der ausstehenden E/A-Anforderungen von Ihrer Anwendung an Ihr Volume. Um maximale Konsistenz zu erzielen, müssen HDD-basierte Volumes eine Warteschlangenlänge (gerundet auf die nächste Ganzzahl) von mindestens 4 haben, wenn eine sequenzielle E/A von 1 MiB durchgeführt wird. Weitere Informationen zur Leistungsoptimierung Ihrer Volumes finden Sie unter E/A-Merkmale und Überwachung.

Erhöhen des Read-Ahead-Werts für leseintensive Workloads in st1 und sc1 mit hohem Durchsatz

Einige Workloads sind leseintensiv und greifen über den Betriebssystem-Seiten-Cache auf das Blockgerät zu (z. B. aus einem Dateisystem). Um den maximalen Durchsatz zu erzielen, empfehlen wir in diesem Fall, eine Read-Ahead-Einstellung von 1 MiB zu konfigurieren. Dies ist eine Blockgerät-spezifische Einstellung, die nur auf Ihre HDD-Volumes angewendet werden sollte.

Verwenden Sie den folgenden Befehl, um den aktuellen Wert des Read-Aheads für Ihre Blockgeräte zu überprüfen:

[ec2-user ~]$ sudo blockdev --report /dev/<device>

Die Blockgerätinformationen werden im folgenden Format zurückgegeben:

RO RA SSZ BSZ StartSec Size Device rw 256 512 4096 4096 8587820544 /dev/<device>

Das angezeigte Gerät meldet einen Read-Ahead-Wert (RA) von 256 (Standardwert). Multiplizieren Sie diese Zahl mit der Sektorgröße (512 Bytes), um die Größe des Read-Ahead-Puffers zu ermitteln, der in diesem Fall 128 KiB groß ist. Verwenden Sie den folgenden Befehl, um den Pufferwert auf 1 MiB festzulegen:

[ec2-user ~]$ sudo blockdev --setra 2048 /dev/<device>

Stellen Sie sicher, dass für die Read-Ahead-Einstellung nun 2.048 angezeigt wird, indem Sie den ersten Befehl erneut ausführen.

Verwenden Sie diese Einstellung nur, wenn Ihr Workload aus großen, sequenziellen E/A-Operationen besteht. Wenn er hauptsächlich aus kleinen, zufälligen E/A-Operationen besteht, wird die Leistung durch diese Einstellung tatsächlich verschlechtert. Wenn Ihr Workload im Allgemeinen hauptsächlich aus kleinen oder zufälligen E/A-Operationen besteht, empfiehlt es sich, eher ein Allzweck-SSD-Volume (gp2) anstatt st1 oder sc1 zu verwenden.

Verwenden eines modernen Linux-Kernels

Verwenden Sie einen modernen Linux-Kernel, der indirekte Beschreibungen akzeptiert. Diese Unterstützung ist in Linux-Kernel 3.8 und höher sowie in jeder EC2-Instance der aktuellen Generation verfügbar. Wenn Ihre durchschnittliche E/A-Größe 44 KiB oder fast 44 KiB beträgt, können Sie eine Instance oder einen Kernel verwenden, der indirekte Beschreibungen unterstützt. Informationen zum Ableiten der durchschnittlichen E/A-Größe aus Amazon CloudWatch-Metriken finden Sie unter E/A-Merkmale und Überwachung.

Um den maximalen Durchsatz auf st1- oder sc1-Volumes zu erzielen, empfehlen wir, für den Parameter xen_blkfront.max (für Linux-Kernel-Versionen unter 4.6) oder für den Parameter xen_blkfront.max_indirect_segments (für Linux-Kernel-Version 4.6 und höher) den Wert 256 festzulegen. Sie können den richtigen Parameter in der BS-Start-Befehlszeile festlegen.

In einem Amazon Linux-AMI mit einem älteren Kernel können Sie ihn am Ende der Kernelzeile in der GRUB-Konfiguration unter /boot/grub/menu.lst hinzufügen:

kernel /boot/vmlinuz-4.4.5-15.26.amzn1.x86_64 root=LABEL=/ console=ttyS0 xen_blkfront.max=256

Bei einem neueren Kernel würde der Befehl ähnlich wie folgt aussehen:

kernel /boot/vmlinuz-4.9.20-11.31.amzn1.x86_64 root=LABEL=/ console=tty1 console=ttyS0 xen_blkfront.max_indirect_segments=256

Starten Sie Ihre Instance neu, damit diese Einstellung wirksam wird.

Weitere Informationen finden Sie unter Konfigurieren von GRUB. Für andere Linux-Verteilungen, insbesondere die, die keinen GRUB-Bootloader verwenden, ist möglicherweise ein anderer Ansatz notwendig, um die Kernel-Parameter anzupassen.

Weitere Informationen zu den EBS-E/A-Merkmalen finden Sie in der re:Invent-Präsentation Amazon EBS: Designing for Performance zu diesem Thema.

Verwenden von RAID 0 zur maximalen Nutzung der Instance-Ressourcen

Einige Instance-Typen können mehr E/A-Durchsatz generieren, als von einem einzigen EBS-Volume verarbeitet werden kann. Sie können mehrere gp2-, io1-, io2-, st1- oder sc1-Volumes in einer RAID 0-Konfiguration miteinander verbinden, um die verfügbare Bandbreite für diese Instances zu verwenden. Weitere Informationen finden Sie unter RAID-Konfiguration unter Linux.

Nachverfolgen der Leistung mit Amazon CloudWatch

Amazon Web Services stellt Leistungskennzahlen für Amazon EBS bereit, die Sie mit Amazon CloudWatch analysieren und anzeigen können, sowie Statusprüfungen, mit denen Sie den Zustand Ihrer Volumes überwachen können. Weitere Informationen finden Sie unter Überwachung des Status Ihrer Volumes.