Amazon-EBS-E/A-Merkmale und -Überwachung - Amazon EBS

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.

Amazon-EBS-E/A-Merkmale und -Überwachung

In einer bestimmten Volume-Konfiguration hängt das Leistungsverhalten Ihrer EBS-Volumes von bestimmten I/O-Merkmalen ab. SSD-gestützte Volumes – Allzweck-SSD (gp2 und gp3) und SSD mit bereitgestellten IOPS (io1 und io2) – stellen konsistente Leistung bereit, ganz gleich, ob die I/O-Operation zufällig oder sequenziell ist. HDD-gestützte Volumes – durchsatzoptimierte HDD (st1) und Cold-HDD (sc1) – stellen nur dann optimale Leistung bereit, wenn I/O-Operationen groß und sequenziell sind. Um zu verstehen, wie hoch die Leistung der SSD- und HDD-Volumes in Ihrer Anwendung ist, sollten Sie den Zusammenhang zwischen den Anforderungen auf dem Volume, der verfügbaren IOPS-Menge, der Zeit bis zum Abschluss einer I/O-Operation und den Durchsatzlimits des Volumes kennen.

IOPS

IOPS ist eine Mengeneinheit, die die I/O-Operationen pro Sekunde darstellt. Die Operationen werden in KiB gemessen, und die zugrunde liegende Laufwerktechnologie bestimmt die maximale Datenmenge, die ein Volume-Typ als einzelne I/O zählt. Die I/O-Größe ist für SSD-Volumes auf 256 KiB und für HDD-Volumes auf 1 024 KiB beschränkt, da SSD-Volumes kleine oder zufällige I/O-Operationen effizienter verarbeiten als HDD-Volumes.

Wenn kleine I/O-Operationen physisch sequenziell sind, versucht Amazon EBS, diese bis zur maximalen I/O-Größe in einer einzelnen I/O-Operation zusammenführen. Wenn I/O-Vorgänge größer als die maximale I/O-Größe sind, versucht Amazon EBS, sie in kleinere I/O-Vorgänge aufzuteilen. Die folgende Tabelle zeigt einige Beispiele.

Volume-Typ Maximale I/O-Größe I/O-Vorgänge aus Ihrer Anwendung Anzahl IOPS Hinweise
SSD 256 KiB 1 x 1024-KiB-I/O-Vorgang 4 (1 024÷256=4) Amazon EBS teilt den 1 024 großen I/O-Vorgang in vier kleinere Operationen mit 256 KiB auf.
8 x sequenzielle 32-KiB-I/O-Vorgänge 1 (8x32=256) Amazon EBS führt die acht sequentiellen 32-KiB-I/O-Vorgänge zu einem einzigen Vorgang mit 256 KiB zusammen.
8 x zufällige 32-KB-I/O-Vorgänge 8 Amazon EBS zählt zufällige I/O-Vorgänge separat.
HDD 1 024 KiB 1 x 1024-KiB-I/O-Vorgang 1 Der I/O-Vorgang ist bereits gleich der maximalen I/O-Größe. Er wird nicht zusammengeführt oder geteilt.
8 x sequenzielle 128-KiB-I/O-Vorgänge 1 (8x128=1 024) Amazon EBS führt die acht sequentiellen 128-KiB-I/O-Vorgänge zu einem einzigen Vorgang mit 1 024 KiB zusammen.
8 x zufällige 32-KB-I/O-Vorgänge 8 Amazon EBS zählt zufällige I/O-Vorgänge separat.

Wenn Sie ein SSD-gestütztes Volume erstellen, das 3 000 IOPS unterstützt (entweder durch Bereitstellen eines Bereitgestellte IOPS SSD-Volumes bei 3 000 IOPS oder durch Dimensionieren eines Allzweck-SSD-Volumes bei 1 000 GiB), und sie es an eine EBS-optimierte Instance anfügen, die ausreichend Bandbreite bereitstellen kann, können Sie bis zu 3 000 Operationen zur I/O von Daten pro Sekunde übertragen. Der Durchsatz wird dabei durch die I/O-Größe bestimmt.

Länge und Latenz der Volume-Warteschlange

Die Volume-Warteschlangenlänge ist die Anzahl der ausstehenden I/O-Anforderungen für ein Gerät. Latenz ist die tatsächliche end-to-end Client-Zeit eines E/A-Vorgangs, d. h. die Zeit, die zwischen dem Senden einer E/A-Operation an EBS und dem Empfang einer Bestätigung von EBS verstrichen ist, dass die E/A-Lese- oder Schreiboperation abgeschlossen ist. Die Warteschlangenlänge muss korrekt mit der I/O-Größe und -Latenz kalibriert werden, damit es weder im Gast-Betriebssystem noch bei der Netzwerkverbindung zu EBS zu Engpässen kommt.

Die optimale Warteschlangenlänge für jeden Workload variiert und hängt davon ab, wie empfindlich Ihre jeweilige Anwendung auf IOPS und Latenz reagiert. Wenn Ihr Workload nicht ausreichend I/O-Anforderungen sendet, um die für Ihr EBS-Volume verfügbare Leistung voll auszuschöpfen, liefert Ihr Volume möglicherweise nicht die IOPS-Rate oder den Durchsatz, die bzw. den Sie bereitgestellt haben.

Transaktionsintensive Anwendungen reagieren empfindlich auf eine höhere I/O-Latenz und eignen sich sehr gut für SSD-gestützte Volumes. Um eine hohe IOPS-Rate bei geringer Latenz sicherzustellen, können Sie eine kurze Warteschlange verwenden und dafür sorgen, dass auf dem Volume eine große Anzahl von IOPS verfügbar ist. Wenn die Zahl der an das Volume gesendeten IOPS kontinuierlich dessen Kapazität übersteigt, kann dies zu einer höheren I/O-Latenz führen.

Durchsatzintensive Anwendungen reagieren weniger empfindlich auf eine höhere I/O-Latenz und eignen sich sehr gut für HDD-gestützte Volumes. Sie können einen hohen Durchsatz zu HDD-gestützten Volumes beibehalten, indem Sie für große, sequenzielle I/O-Operationen eine lange Warteschlange verwenden.

Einschränkungen in Bezug auf die I/O-Größe und den Volume-Durchsatz

Wenn Ihre I/O-Größe bei SSD-gestützten Volumes sehr hoch ist, ist die Anzahl der IOPS möglicherweise geringer als bereitgestellt, da Sie das Durchsatzlimit des Volumes erreichen. Beispiel: Ein gp2-Volume unter 1 000 GiB mit verfügbaren Burst-Credits hat ein IOPS-Limit von 3 000 und ein Volume-Durchsatzlimit von 250 MiB/s. Wenn Sie eine I/O-Größe von 256 KiB verwenden, erreicht Ihr Volume das Durchsatzlimit bei 1 000 IOPS (1 000 x 256 KiB = 250 MiB). Bei kleineren I/O-Größen (z. B. 16 KiB) können auf diesem Volume 3 000 IOPS aufrechterhalten werden, da der Durchsatz weit unter 250 MiB/s liegt. (Bei diesen Beispielen wird angenommen, dass die I/O Ihres Volumes nicht die Durchsatzlimits der Instance erreicht.) Weitere Informationen zu den Durchsatzlimits für jeden EBS-Volume-Typ finden Sie unter Amazon EBS-Volume-Typen.

Bei kleineren E/A-Operationen wird möglicherweise ein higher-than-provisioned IOPS-Wert angezeigt, der von Ihrer Instance gemessen wird. Dies geschieht, wenn das Instance-Betriebssystem kleine I/O-Operationen in einer größeren Operation zusammenführt, bevor sie an Amazon EBS gesendet werden.

Wenn Ihr Workload sequenzielle I/O-Operationen auf HDD-gestützten st1- und sc1-Volumes verwendet, ist die Anzahl der in der Instance gemessenen IOPS vielleicht höher als erwartet. Dies geschieht, wenn das Instance-Betriebssystem sequenzielle I/O-Operationen zusammenführt und sie in Einheiten mit einer Größe von 1 024 KiB zählt. Wenn Ihr Workload kleine oder zufällige I/O-Verfahren verwendet, ist der Durchsatz möglicherweise geringer als erwartet. Dies liegt daran, das jede zufällige, nicht sequenzielle I/O in die IOPS-Gesamtanzahl einfließt. Das kann dazu führen, dass Sie das IOPS-Limit des Volumes früher als erwartet erreichen.

Unabhängig von Ihrem EBS-Volume-Typ sollten Sie sicherstellen, dass die Bandbreite Ihrer EC2-Instance kein begrenzender Faktor ist, wenn Sie in Ihrer Konfiguration nicht den erwarteten IOPS-Wert oder Durchsatz erreichen. Sie sollten immer eine EBS-optimierte Instance der aktuellen Generation verwenden (oder eine mit einer 10 Gbit/s-Netzwerkverbindung), um eine optimale Leistung zu erzielen. Wenn Sie nicht den erwarteten IOPS-Wert erreichen, kann das auch daran liegen, dass nicht genügend I/O-Operationen an die EBS-Volumes gesendet werden.

Überwachen von E/A-Merkmalen mit CloudWatch

Sie können diese E/A-Merkmale mit den CloudWatch Volume-Metriken jedes Volumes überwachen. Zu den wichtigsten Metriken, die berücksichtigt werden müssen, gehören die Folgenden:

  • VolumeStalledIOCheck

  • BurstBalance

  • VolumeReadBytes | VolumeWriteBytes

  • VolumeReadOps | VolumeWriteOps

  • VolumeQueueLength

VolumeStalledIOCheck überwacht den Status Ihrer EBS-Volumes, um festzustellen, wenn Ihre Volumes beeinträchtigt sind. Bei der Metrik handelt es sich um einen binären Wert, der je nachdem, ob das EBS-Volume I/O-Operationen abschließen kann, den Status 0 1 (bestanden) oder (nicht bestanden) zurückgibt. Bei dieser Prüfung werden grundlegende Probleme mit der Amazon EBS-Infrastruktur erkannt, z. B. die folgenden:

  • Hardware- oder Softwareprobleme auf den Speichersubsystemen, die den EBS-Volumes zugrunde liegen

  • Hardwareprobleme auf dem physischen Host, die die Erreichbarkeit der EBS-Volumes über Ihre EC2-Instance beeinträchtigen

  • Verbindungsprobleme zwischen der Instance und den EBS-Volumes

Wenn die VolumeStalledIOCheck Metrik fehlschlägt, können Sie entweder warten, AWS bis das Problem behoben hat, oder Maßnahmen ergreifen, z. B. das betroffene Volume ersetzen oder die Instance, an die das Volume angefügt ist, anhalten und neu starten. In den meisten Fällen, wenn diese Metrik fehlschlägt, diagnostiziert EBS Ihr Volume automatisch und stellt es innerhalb weniger Minuten wieder her. Sie können die Aktion I/O anhalten in verwenden AWS Fault Injection Service , um kontrollierte Experimente auszuführen, um Ihre Architektur und Überwachung basierend auf dieser Metrik zu testen und Ihre Ausfallsicherheit bei Speicherfehlern zu verbessern.

Sie können die Amazon-EBS-Speicher-I/O-Latenz mit VolumeReadOps, VolumeWriteOps, VolumeTotalReadTime und VolumeTotalWriteTime messen. Sie können die folgende Formel verwenden, um die durchschnittliche I/O-Latenz Ihres Volumes zu überwachen:

Average I/O latency in ms/op = (VolumeTotalReadTime + VolumeTotalWriteTime) / (VolumeReadOps + VolumeWriteOps)

Wenn Ihre I/O-Latenz höher als nötig ist, prüfen Sie den IOPS-Wert, um sicherzustellen, dass Ihre Anwendung nicht versucht, mehr IOPS als bereitgestellt zu senden. Sie können die folgende Formel verwenden, um den durchschnittlichen IOPS-Wert Ihres Volumes zu überwachen:

Estimated average IOPS in ops/s = (Sum(VolumeReadOps) + Sum(VolumeWriteOps)) / (Period - Sum(VolumeIdleTime))

Wenn Ihre Anwendung eine größere Anzahl von IOPS benötigt, als Ihr Volume bereitstellen kann, sollten Sie eine der folgenden Optionen erwägen:

  • Ein gp3-, io2- oder io1-Volume, das mit genügend IOPS bereitgestellt wird, um die erforderliche Latenz zu erreichen

  • Ein größeres gp2-Volume, das eine ausreichende IOPS-Grundleistung bietet

HDD-gestützte st1- und sc1-Volumes sind bei Workloads, die die maximale I/O-Größe von 1 024 KiB nutzen, am leistungsfähigsten. Sie können die durchschnittliche I/O-Größe ermitteln, indem Sie VolumeWriteBytes durch VolumeWriteOps dividieren. Dieselbe Berechnung gilt für Leseoperationen. Wenn die durchschnittliche I/O-Größe kleiner als 64 KiB ist, können Sie eine Leistungsverbesserung erzielen, wenn Sie die Größe der I/O-Operationen erhöhen, die an ein st1- oder sc1-Volume gesendet werden.

Anmerkung

Wenn die durchschnittliche I/O-Größe 44 KiB oder fast 44 KiB beträgt, könnten Sie eine Instance oder einen Kernel verwenden, der indirekte Beschreibungen unterstützt. Diese Unterstützung ist in Linux-Kernel 3.8 und höher verfügbar sowie in jeder Instance der aktuellen Generation.

BurstBalance zeigt die Burst Bucket-Menge für die Volumes gp2, st1 und sc1 als Prozentsatz der Restmenge an. Wenn Ihr Burst Bucket-Guthaben erschöpft ist, wird das Volume-I/O-Guthaben (für gp2-Volumes) oder das Volume-Durchsatzguthaben (für st1- und sc1-Volumes) auf den Basiswert gedrosselt. Prüfen Sie den BurstBalance-Wert, um festzustellen, ob Ihr Volume aus diesem Grund gedrosselt wird. Eine vollständige Liste der verfügbaren Amazon-EBS-Metriken finden Sie unter Amazon- CloudWatch Metriken für Amazon EBS und Amazon-EBS-Metriken für Nitro-basierte Instances.

Zugehörige Ressourcen

Weitere Informationen zu den Amazon EBS-I/O-Merkmalen finden Sie in der re:Invent-Präsentation Amazon EBS: Designing for Performance.