E/A-Merkmale und Überwachung - Amazon Elastic Compute Cloud

E/A-Merkmale und Überwachung

In einer bestimmten Volume-Konfiguration hängt das Leistungsverhalten Ihrer EBS-Volumes von bestimmten E/A-Merkmalen ab. SSD-gestützte Volumes – Allzweck-SSD (gp2 und gp3) und Bereitgestellte IOPS-SSD (io1 und io2) – stellen eine konsistente Leistung bereit, ganz gleich, ob die E/A-Operation zufällig oder sequenziell ist. HDD-gestützte Volumes – Throughput Optimized HDD (st1) und Cold HDD (sc1) – stellen nur eine optimale Leistung bereit, wenn E/A-Operationen zufällig 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 E/A-Operation und den Durchsatzlimits des Volumes kennen.

E/A\Sek

IOPS ist eine Mengeneinheit, die die E/A-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 E/A zählt. Die E/A- E/A-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 E/A-Operationen effizienter verarbeiten als HDD-Volumes.

Wenn kleine E/A-Operationen physisch zusammenhängen, versucht Amazon EBS, diese bis zur maximalen Größe in einer einzelnen E/A-Operation zusammenführen. Bei SSD-Volumes zählt eine einzelne 1.024-KiB-E/A-Operation beispielsweise als 4 Operationen (1.024 ÷ 256 = 4), während 8 zusammenhängende E/A-Operationen bei 32 KiB jeweils als 1 Operation zählen (8 × 32 = 256). 8 zufällige, nicht zusammenhängende E/A-Vorgänge mit 32 KiB zählen jedoch jeweils als 8 Operationen. In diesem Fall zählt jede E/A-Operation unter 32 KiB als 1 Operation.

Entsprechend gilt für HDD-gestützte Volumes, dass sowohl eine einzelne 1.024-KiB-E/A-Operation als auch 8 sequenzielle 128 KiB-Operationen als eine Operation gezählt werden. 8 zufällige E/A-Operationen bei 128 KiB würden jedoch als 8 Operationen gezählt.

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 E/A von Daten pro Sekunde übertragen. Der Durchsatz wird dabei durch die E/A-Größe bestimmt.

Länge und Latenz der Volume-Warteschlange

Die Volume-Warteschlangenlänge ist die Anzahl der ausstehenden E/A-Anforderungen für ein Gerät. Die Latenz ist die tatsächliche End-to-End-Client-Zeit einer E/A-Operation. Mit anderen Worten: Dies ist die verstrichene Zeit zwischen dem Senden einer E/A-Operation an EBS und dem Empfangen einer Bestätigung von EBS, dass die E/A-Lese- oder Schreiboperation abgeschlossen ist. Die Warteschlangenlänge muss korrekt mit der E/A-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 E/A-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 E/A-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 E/A-Latenz führen.

Durchsatzintensive Anwendungen reagieren weniger empfindlich auf eine höhere E/A-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 E/A-Operationen eine lange Warteschlange verwenden.

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

Wenn Ihre E/A-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-Gutschriften hat ein IOPS-Limit von 3.000 und ein Volume-Durchsatzlimit von 250 MiB/s. Wenn Sie eine E/A-Größe von 256 KiB verwenden, erreicht Ihr Volume das Durchsatzlimit bei 1.000 IOPS (1.000 x 256 KiB = 250 MiB). Bei kleineren E/A-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 E/A 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 in der Instance unter Umständen ein höherer IOPS-Wert gemessen, als Sie bereitgestellt haben. Dies geschieht, wenn das Instance-Betriebssystem kleine E/A-Operationen in einer größeren Operation zusammenführt, bevor sie an Amazon EBS gesendet werden.

Wenn Ihr Workload sequenzielle E/A-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 E/A-Operationen zusammenführt und sie in Einheiten mit einer Größe von 1.024 KiB zählt. Wenn Ihr Workload kleine oder zufällige E/A-Verfahren verwendet, ist der Durchsatz möglicherweise geringer als erwartet. Dies liegt daran, das jede zufällige, nicht sequenzielle E/A 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. Weitere Informationen finden Sie unter Amazon EBS–optimierte Instances. Wenn Sie nicht den erwarteten IOPS-Wert erreichen, kann das auch daran liegen, dass nicht genügend E/A-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 der einzelnen Volumes überwachen. Zu den wichtigsten Metriken, die berücksichtigt werden müssen, gehören die Folgenden:

  • BurstBalance

  • VolumeReadBytes

  • VolumeWriteBytes

  • VolumeReadOps

  • VolumeWriteOps

  • VolumeQueueLength

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-E/A-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 EBS-Metriken und Amazon EBS-Metriken für Nitro-basierte Instances.

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

Anmerkung

Wenn die durchschnittliche E/A-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.

Wenn Ihre E/A-Latenz höher als nötig ist, prüfen Sie VolumeQueueLength, um sicherzustellen, dass Ihre Anwendung nicht versucht, mehr IOPS zu senden, als Sie bereitgestellt haben. Wenn Ihre Anwendung eine größere Anzahl von IOPS benötigt, als Ihr Volume bereitstellen kann, sollten Sie ein größeres gp2-Volume mit einer höheren Basisleistung oder ein io1- oder io2-Volume mit mehr bereitgestellten IOPS verwenden, um niedrigere Latenzen zu erzielen.

Zugehörige Ressourcen

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