Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

RDS Storage: Kostenvergleich von GP3, GP2 und Provisioned IOPS

By Tom RosenfeldAug 13, 20244 min read

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

Dieser Artikel beleuchtet typische Stolpersteine und Best Practices bei der Wahl der kosteneffizientesten SSD-Volumes in RDS.

Für SSD-Storage in RDS stehen drei Optionen zur Verfügung. Amazon RDS bietet zwei Varianten von General-Purpose-SSD-Storage: gp2 oder gp3. Hinzu kommt Provisioned IOPS SSD io1. (Daneben gibt es noch den alten Magnetic Storage, der für die meisten Anwendungen schlicht zu langsam ist. Hinweis: io2, in EBS verfügbar, wird in RDS bislang nicht unterstützt.)

  • gp2 – ältere Generation, IOPS abhängig von der Volume-Größe, burstfähig
  • gp3 – aktuelle Generation, konstante IOPS, mit Baseline-IOPS; zusätzliche IOPS und Durchsatz lassen sich hinzubuchen
  • io1 – (auch bekannt als PIOPS). Konstante Performance, Provisioned IOPS müssen erworben werden. Die teuerste Option.

Alle drei Storage-Typen liefern Latenzen im einstelligen Millisekundenbereich.

Die Kosten pro GB sind in RDS für gp2 und gp3 identisch (anders als in EC2, wo gp3 günstiger ist). gp3 bietet jedoch mehr Baseline-IOPS (für Volumes bis 4.000 GB) – ohne die Einschränkung des Burstings.

Preismatrix als Spreadsheet

Das folgende Spreadsheet zeigt Preis und IOPS für eine bestimmte Volume-Größe im Vergleich: gp2 vs. gp3 vs. io1.

Kostenvergleich SSD-Volumes

Einige Beispiele aus der Tabelle:

Bei einem 1.000-GB-Volume erhalten Sie mit gp3 dauerhaft 12.000 IOPS. Mit gp2 bekommen Sie ebenfalls 12.000 IOPS – allerdings nur in begrenzten Bursts. Die Sustained-IOPS liegen lediglich bei 3.000. Beide kosten gleich viel: 115 USD. Mit io1 PIOPS, konfiguriert auf dieselben 12.000 IOPS, zahlen Sie 425 USD!

Brauchen Sie ein 5.000-GB-Volume, liefert gp2 für 525 USD 15.000 IOPS. Zum gleichen Preis erhalten Sie mit gp3 nur 12.000 IOPS (für mehr können Sie zuzahlen). io1 PIOPS wäre mit 2.125 USD deutlich teurer.

Disk-Striping in RDS

Alle RDS-Engines (außer MS SQL Server) verteilen die Daten ab einer bestimmten Mindestgröße per Striping auf 4 Volumes. Dadurch liefern sowohl gp2 als auch gp3 höhere IOPS und höheren Durchsatz, als man üblicherweise erwarten würde – wie oben gezeigt.

Striping-Details:

  • MariaDB, MySQL und PostgreSQL nutzen Striping ab Größen über 400 GB
  • Oracle nutzt Striping ab 200 GB
  • Wird ein bestehendes Volume so vergrößert, dass Striping ausgelöst wird (z. B. > 400 GB), kann das während der Modifikation über mehrere Stunden zu deutlich erhöhten IOPS und Latenzen führen.

Details zu DB-Typ und Größe finden Sie in der AWS-Dokumentation [3].

Welcher Storage-Typ ist also der richtige?

In nahezu allen Fällen sollte gp3 Ihre Standardwahl sein. Früher empfahl AWS selbst bei geringem IOPS-Bedarf io1, um niedrige, konstante Latenzen zu erreichen. Inzwischen bieten jedoch sowohl io1 als auch gp3 Latenzen im einstelligen Millisekundenbereich. Der einzige Unterschied: io1 garantiert das zu 99,9 % der Zeit, gp3 "nur" zu 99,0 %. Da gp3 bis zu 73 % günstiger ist als io1 (sofern io1 mit derselben Baseline wie gp3 konfiguriert wird), fällt die Wahl leicht.

Wann io1 sinnvoll ist:

  • Sie benötigen mehr als 64.000 IOPS
  • Sie benötigen konstante Performance häufiger als zu 99,0 % der Zeit

Volume-Typ einer laufenden DB ändern

  • Ein Wechsel zwischen io1, gp2 oder gp3 erfolgt grundsätzlich ohne Downtime [2]
  • Sie können jedoch nicht häufiger als alle 6 Stunden eine Änderung vornehmen

Stolperfallen

  • Wächst das Volume über 400 GB hinaus, wird Striping ausgelöst – das beansprucht währenddessen erhebliche IOPS und kann die Latenz spürbar beeinträchtigen. Wenn absehbar ist, dass das Volume bald wachsen wird, starten Sie daher am besten direkt mit 400 GB. Oracle stripet ab 200 GB, MS SQL Server hingegen nie.
  • RDS Storage Autoscaling kann für viele Überraschungen sorgen. Machen Sie sich unbedingt mit allen Einschränkungen vertraut [1]. So kann es etwa unerwartet ein Striping anstoßen.
  • Möglicherweise gewährt Ihnen AWS auf Ihrem aktuellen gp2-Volume mehr IOPS, als Sie tatsächlich bezahlen. (Das gilt insbesondere für workloads, die schon viele Jahre laufen.) Beim Wechsel auf gp3 können diese kostenlosen IOPS wegfallen, was die Performance verschlechtern kann. (Prüfen Sie in CloudWatch, ob Sie höhere IOPS erhalten als erwartet.)
  • IOPS-Limits je Instance-Typ: Alle RDS-Instances sind in Bandbreite und IOPS limitiert. Selbst wenn Sie für PIOPS zahlen, drosselt die Instance, wenn sie nicht groß genug ist. Die Limits je Instance-Typ finden Sie in der AWS-EC2-Dokumentation [4].

Beispiele:

c6g.4xlarge begrenzt auf 20.000 IOPS c7g.4xlarge begrenzt auf 20.000 IOPS, kann aber bis 40.000 bursten

Fazit

Wählen Sie den Storage-Typ für Ihre RDS-Instances mit Bedacht. In der Regel sparen Sie mit gp3 statt io1 deutlich – ohne Einbußen bei der Performance.

Quellen:

[1] Managing capacity automatically with Amazon RDS storage autoscaling [2] Modifying an Amazon RDS DB instance

[3] Amazon RDS DB instance storage — Amazon R DS

[4] Amazon EBS–optimized instances — Amazon Elastic Compute Cloud

Frequently asked
questions

Sollte ich io1 + PIOPS einsetzen?
  • Nur, wenn Sie 64.000–256.000 IOPS (oder mehr als 4.000 Mbps Durchsatz) benötigen
  • Wenn Sie eine I/O-Konsistenz von 99,9 % statt 99 % wie bei gp2 oder gp3 brauchen
  • Es kostet Sie 270 % mehr als gp2/gp3
  • Auch wenn die AWS-Konsole io1 als Standard anzeigt (bei einigen Konfigurationsvorlagen), können Sie auf gp3 (oder eine andere Option) wechseln.
Gibt es noch Gründe, eine neue RDS-DB mit gp2 anzulegen?
  • Ja – wenn Ihre erforderliche Volume-Größe über 4.000 GB liegt. In diesem Fall liefern die gp2-IOPS mehr als die Baseline von gp3 (siehe Tabelle oben). Benötigen Sie mehr IOPS als die gp2-Baseline, ist es günstiger, auf gp3 zu setzen und die zusätzlichen IOPS zu kaufen.
Sollte ich von io1 auf gp3 (oder gp2) umstellen?
  • Ja! Sofern Sie weniger als 64.000 IOPS benötigen, sollten Sie umstellen und bis zu 73 % sparen (siehe Tabelle).
Sollte ich von gp2 auf gp3 wechseln?

Das kommt darauf an:

  • Never change a running system: Es winkt keine Kostenersparnis, und die Performance kann sich sogar verschlechtern – siehe Stolperfallen unten.
  • Liegt die Volume-Größe über 4.000 GB, liefert gp3 weniger IOPS (es sei denn, Sie zahlen für mehr).
  • Braucht Ihr workload mehr IOPS, als Sie mit gp2 bekommen, wechseln Sie auf gp3 und buchen die zusätzlich benötigten IOPS hinzu.
  • Hinweis: Wie bei jeder DB-Änderung gilt als Best Practice: Klonen Sie Ihre DB zunächst und testen Sie die Umstellung. Vergewissern Sie sich, dass gp3 die erwarteten IOPS und den erwarteten Durchsatz liefert.