Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Stockage RDS : comparatif des coûts GP3, GP2 et IOPS provisionnés

By Tom RosenfeldAug 13, 20244 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

Cet article passe en revue les principaux enjeux et bonnes pratiques pour choisir les volumes SSD les plus rentables sur RDS.

RDS propose trois types de stockage SSD. Amazon RDS offre deux formules de SSD à usage général : gp2 et gp3. À cela s'ajoute le SSD à IOPS provisionnés io1. (L'ancien stockage magnétique existe toujours, mais il est trop lent pour la plupart des applications. À noter que io2, disponible sur EBS, n'est pas encore pris en charge sur RDS).

  • gp2 — Génération précédente, IOPS dépendants de la taille du volume, avec capacité de burst
  • gp3 — Génération actuelle, IOPS constants, IOPS de base inclus avec possibilité d'acheter des IOPS et du débit supplémentaires
  • io1 — (Aussi appelé PIOPS). Performances constantes, achat d'IOPS provisionnés obligatoire. Le plus coûteux.

Les trois types de stockage offrent une latence de l'ordre de quelques millisecondes.

Le coût par Go est identique pour gp2 et gp3 sur RDS (contrairement à EC2, où gp3 est moins cher). En revanche, gp3 fournit davantage d'IOPS de base (pour les volumes jusqu'à 4 000 Go) sans la limitation liée au burst.

Tableau comparatif des tarifs

Le tableau ci-dessous détaille les tarifs et les IOPS pour un volume d'une taille donnée en gp2, gp3 et io1.

Comparatif des coûts des volumes SSD

Quelques exemples tirés du tableau :

Pour un volume de 1 000 Go, vous obtiendrez 12 000 IOPS soutenus en gp3. En gp2, vous atteignez les mêmes 12 000 IOPS, mais seulement par bursts limités. Vos IOPS soutenus se limitent à 3 000. Les deux options coûtent le même prix : 115 $. Avec io1 PIOPS configuré sur les mêmes 12 000 IOPS, la facture grimpe à 425 $ !

Pour un volume de 5 000 Go, gp2 vous offre 15 000 IOPS pour 525 $. Au même prix, gp3 ne fournira que 12 000 IOPS (vous pouvez toutefois payer plus pour en obtenir davantage). io1 PIOPS reviendrait bien plus cher : 2 125 $.

Striping de disque sur RDS

Tous les moteurs RDS (à l'exception de MS SQL Server) répartissent les données sur 4 volumes (striping) au-delà d'une certaine taille minimale. C'est pourquoi gp2 et gp3 affichent des IOPS et un débit supérieurs à ce que l'on attendrait normalement, comme illustré plus haut.

Détails du striping :

  • MariaDB, MySQL et PostgreSQL appliquent un striping pour les tailles supérieures à 400 Go
  • Oracle applique un striping au-delà de 200 Go
  • Augmenter la taille d'un volume existant au point de déclencher un striping (par exemple > 400 Go) peut entraîner une hausse importante des IOPS et de la latence pendant plusieurs heures durant la modification.

Consultez la documentation AWS pour le détail par type et taille de base de données [3].

Quel type de stockage choisir ?

Dans la quasi-totalité des cas, gp3 doit être votre choix par défaut. Auparavant, AWS recommandait io1 même pour de faibles besoins en IOPS, afin de garantir une latence faible et constante. Aujourd'hui, io1 et gp3 offrent tous deux une latence de l'ordre de quelques millisecondes. Seule différence : io1 garantit cette latence 99,9 % du temps, contre seulement 99,0 % pour gp3. Sachant que gp3 est jusqu'à 73 % moins cher que io1 (à configuration égale avec gp3), le choix s'impose de lui-même.

Quand utiliser io1 :

  • vous avez besoin de plus de 64 000 IOPS
  • vous avez besoin de performances constantes au-delà de 99,0 % du temps

Modifier le type de volume sur une base de données en cours d'exécution

  • En général, aucune interruption de service n'est à prévoir lors d'un changement entre io1, gp2 ou gp3 [2]
  • Vous ne pouvez toutefois effectuer qu'une seule modification toutes les 6 heures

Pièges à éviter

  • Dépasser les 400 Go déclenche un striping qui consomme une part importante des IOPS pendant l'opération, ce qui peut sérieusement dégrader la latence. Mieux vaut donc démarrer directement à 400 Go si vous prévoyez une croissance rapide. Oracle effectue son striping à 200 Go, tandis que MS SQL Server n'en effectue jamais.
  • L'autoscaling du stockage RDS peut réserver bien des surprises. Veillez à bien en comprendre toutes les limites [1]. Il pourrait, par exemple, déclencher un striping de manière inattendue.
  • AWS vous fournit peut-être plus d'IOPS que ce que vous payez sur votre volume gp2 actuel. (C'est particulièrement vrai pour des workloads en place depuis des années.) Si vous passez à gp3, vous risquez donc de perdre ces IOPS gratuits et de voir vos performances se dégrader. (Vous pouvez le vérifier dans Cloudwatch en regardant si vos IOPS dépassent les valeurs attendues.)
  • Limites d'IOPS par type d'instance : toutes les instances RDS sont limitées en bande passante et en IOPS. Même si vous payez pour des PIOPS, votre instance vous bridera si elle n'est pas suffisamment dimensionnée. Les limites par type d'instance figurent dans la documentation AWS EC2 [4].

Par exemple :

c6g.4xlarge limité à 20 000 IOPS c7g.4xlarge limité à 20 000 IOPS, mais avec un burst possible jusqu'à 40 000

En résumé

Soyez vigilant au moment de choisir le type de stockage de vos instances RDS. Opter pour gp3 plutôt que io1 permet souvent de réaliser des économies substantielles, sans sacrifier les performances.

Références :

[1] Gérer la capacité automatiquement avec l'autoscaling du stockage Amazon RDS [2] Modifier une instance Amazon RDS DB

[3] Stockage des instances Amazon RDS DB — Amazon R DS

[4] Instances optimisées pour Amazon EBS — Amazon Elastic Compute Cloud

Frequently asked
questions

Faut-il opter pour io1 + PIOPS ?
  • Uniquement si vous avez besoin de 64 000 à 256 000 IOPS (ou d'un débit supérieur à 4 000 Mbit/s)
  • Si vous avez besoin d'une cohérence d'E/S de 99,9 % au lieu de 99 % avec gp2 ou gp3
  • Cela vous coûtera 270 % de plus que gp2/gp3
  • Même si la console AWS propose io1 par défaut (pour certains modèles de configuration), vous pouvez basculer sur gp3 (ou un autre type).
Y a-t-il un cas où créer une nouvelle base RDS en gp2 reste pertinent ?
  • Oui. Si la taille de volume requise dépasse 4 000 Go. Dans ce cas, les IOPS de gp2 seront supérieurs aux IOPS de base offerts par gp3 (voir le tableau ci-dessus). Si vous avez besoin de plus d'IOPS que la base de gp2, il sera plus économique de partir sur gp3 et d'acheter les IOPS supplémentaires.
Faut-il migrer de io1 vers gp3 (ou gp2) ?
  • Oui ! Si vous avez besoin de moins de 64 000 IOPS, la migration vous fera économiser jusqu'à 73 % (voir le tableau).
Faut-il migrer de gp2 vers gp3 ?

Cela dépend :

  • Si tout fonctionne, ne touchez à rien. Aucune économie à la clé, et les performances pourraient même se dégrader — voir la section Pièges à éviter ci-dessous.
  • Si le volume dépasse 4 000 Go, gp3 fournira moins d'IOPS (sauf si vous payez davantage).
  • Si votre workload nécessite plus d'IOPS que ce que vous obtenez en gp2, migrez vers gp3 et payez les IOPS supplémentaires nécessaires.
  • Précaution : comme pour toute modification de base de données, la bonne pratique consiste à cloner d'abord votre base, puis à tester la conversion. Assurez-vous que gp3 vous fournit bien les IOPS et le débit attendus.