Caractéristiques et surveillance des E/S Amazon EBS - Amazon EBS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Caractéristiques et surveillance des E/S Amazon EBS

Sur une configuration de volume donnée, certaines caractéristiques d’I/O déterminent les performances pour vos volumes EBS. Volumes basés sur SSD—Les SSD à usage général (gp2 et gp3) et SSD IOPS provisionnés (io1 et io2) offrent des performances constantes, que l’opération d’I/O soit aléatoire ou séquentielle. Volumes basés sur HDD—Les HDD à débit optimisé (st1) et HDD à froid (sc1)—offrent des performances optimales seulement lorsque les opérations d’I/O sont volumineuses et séquentielles. Afin de comprendre comment les volumes SSD et HDD se comporteront dans votre application, il est important de comprendre la connexion entre la demande sur le volume, le nombre d’IOPS disponibles pour ce dernier, le temps nécessaire pour effectuer une opération d’I/O et les limites de débit du volume.

IOPS

Les IOPS constituent une unité de mesure qui correspond aux opérations d’IOPS. Les opérations sont mesurées en KiB, et la technologie de disque sous-jacent détermine la quantité maximale de données qu’un type de volume comptabilise comme une seule I/O. La taille d’une I/O est limitée à 256 KiB pour les volumes SSD et à 1 024 KiB pour les volumes HDD, car les volumes SSD gèrent les I/O aléatoires ou de petite taille beaucoup plus efficacement que les volumes HDD.

Lorsque des opérations d’I/O de petite taille sont physiquement séquentielles, Amazon EBS tente de les fusionner dans une seule opération d’I/O, sans dépasser la taille maximale. De même, lorsque les opérations d’I/O sont supérieures à la taille maximale d’I/O, Amazon EBS tente de les diviser en opérations d’I/O de petite taille. Le tableau suivant montre quelques exemples.

Type de volume Taille d’I/O maximum Opérations d’I/O de votre application Nombre d’IOPS Remarques
SSD 256 Kio 1 opération d’I/O de 1 024 KiB 4 (1 024÷256=4) Amazon EBS divise les 1 024 opérations d’I/O en quatre opérations plus petites de 256 KiB.
8 x opérations d’I/O séquentielles de 32 Kio 1 (8x32=256) Amazon EBS fusionne les huit opérations d’I/O séquentielles de 32 KiB en une seule opération de 256 KiB.
8 opérations d’I/O aléatoires de 32 KiB 8 Amazon EBS compte séparément les opérations d’I/O aléatoires.
HDD 1 024 KiB 1 opération d’I/O de 1 024 KiB 1 L’opération d’I/O est déjà égale à la taille d’I/O maximale. Elle n’est ni fusionnée ni divisée.
8 x opérations d’I/O séquentielles de 128 Kio 1 (8x128=1 024) Amazon EBS fusionne les huit opérations d’I/O séquentielles de 128 Kio dans une seule opération d’I/O de 1 024 Kio.
8 opérations d’I/O aléatoires de 32 KiB 8 Amazon EBS compte séparément les opérations d’I/O aléatoires.

Par conséquent, lorsque vous créez un volume basé sur SSD qui prend en charge 3 000 IOPS (soit en provisionnant un volume Provisioned IOPS SSD à 3 000 IOPS ou en dimensionnant un volume SSD à usage général à 1 000 GiO), et que vous l’attachez à une instance optimisée pour EBS capable de fournir la bande passante nécessaire, vous pouvez transférer jusqu’à 3 000 I/O de données par seconde, le débit étant déterminé par la taille d’I/O.

Latence et longueur de file d’attente d’un volume

La longueur de file d’attente d’un volume correspond au nombre de demandes d’I/O pour un appareil. La latence est le temps réel passé par le end-to-end client lors d'une opération d'E/S, en d'autres termes, le temps écoulé entre l'envoi d'une E/S à EBS et la réception d'un accusé de réception d'EBS indiquant que la lecture ou l'écriture des E/S est terminée. La longueur de la file d’attente doit être correctement calibrée avec la taille et la latence d’I/O, pour éviter de créer des goulots d’étranglement sur le système d’exploitation « invité » ou sur le lien réseau vers EBS.

La longueur de la file d’attente optimale varie en fonction des charges de travail, selon la sensibilité de votre application à la latence et à l’IOPS. Si votre charge de travail ne fournit pas suffisamment de demandes d’I/O pour tirer pleinement parti des performances disponibles dans votre volume EBS, il est possible que le volume ne donne pas les IOPS ou le débit que vous avez provisionnés.

Les applications qui génèrent de nombreuses transactions sont sensibles à une latence d’I/O accrue et sont adaptées à des volumes basés sur SSD. Vous pouvez conserver des IOPS élevées et une latence faible grâce à une longueur de file d’attente moyenne réduite et à un nombre élevé d’IOPS disponibles pour le volume. Si vous envoyez vers un volume un nombre d’IOPS supérieur à la quantité qu’il peut contenir, vous risquez d’accroître la latence d’I/O.

Les applications qui génèrent des débits élevés sont moins sensibles à une latence d’I/O accrue et sont adaptées à des volumes basés sur HDD. Vous pouvez conserver un débit élevé vers les volumes basés sur HDD grâce à une longueur de file d’attente élevée lors de l’exécution d’I/O séquentielles volumineuses.

Taille des I/O et limites de débit par volume

Pour les volumes basés sur SSD, si votre taille d’I/O est très volumineuse, vous aurez peut-être un nombre inférieur d’IOPS par rapport aux IOPS provisionnées, dans la mesure où vous aurez atteint le débit limite pour le volume. Par exemple, un volume gp2 inférieur à 1 000 GiO avec un solde de crédits par rafales disponible a une limite de 3 000 IOPS et une limite de débit pour le volume de 250 MiO/s. Si vous utilisez une taille d’I/O de 256 Kio, votre volume atteint sa limite de débit à 1 000 IOPS (1 000 x 256 Kio = 250 Mio). Pour des tailles d’I/O inférieures (par exemple, 16 Kio), ce même volume peut contenir 3 000 IOPS dans la mesure où le débit est nettement inférieur à 250 Mio/s. (Ces exemples supposent que l’I/O de votre volume n’atteint pas les limites de débit de l’instance.) Pour plus d’informations sur les limites de débit pour chaque type de volume EBS, consultez Types de volume Amazon EBS.

Pour les opérations d'E/S de moindre envergure, vous pouvez voir une valeur d' higher-than-provisioned IOPS mesurée depuis l'intérieur de votre instance. Cela se produit lorsque le système d’exploitation de l’instance fusionne les petites opérations d’I/O dans une opération de plus grande taille avant de les transmettre à Amazon EBS.

Si votre charge de travail utilise des I/O séquentielles sur des volumes st1 et sc1 basés sur HDD, vous risquez d’obtenir un nombre d’IOPS plus élevé que prévu (mesuré depuis votre instance). Cela se produit lorsque le système d’exploitation de l’instance fusionne des I/O séquentielles et les comptabilise dans des unités de 1 024 Kio. Si votre charge de travail utilise des I/O de petite taille ou aléatoires, vous risquez d’obtenir un débit moins élevé que prévu. En effet, nous comptabilisons chaque I/O aléatoire et non séquentielle par rapport au nombre total d’IOPS, ce qui peut vous conduire à atteindre la limite d’IOPS du volume plus tôt que prévu.

Quel que soit votre type de volume EBS, si vous n’obtenez pas les IOPS ou le débit prévus dans votre configuration, veillez à ce que la bande passante de votre instance EC2 ne soit pas à l’origine de la limite. Pour obtenir des performances optimales, vous devez toujours utiliser une instance optimisée pour EBS de la génération actuelle (ou qui inclut une connectivité réseau de 10 Go/s). Si vous ne voyez pas les IOPS attendues, le problème peut également être dû au manque d’I/O sur les volumes EBS.

Surveillez les caractéristiques des E/S à l'aide de CloudWatch

Vous pouvez surveiller ces caractéristiques d'E/S à l'aide des métriques de volume de chaque CloudWatch volume. Les métriques importantes à prendre en compte sont les suivantes :

  • VolumeStalledIOCheck

  • BurstBalance

  • VolumeReadBytes | VolumeWriteBytes

  • VolumeReadOps | VolumeWriteOps

  • VolumeQueueLength

VolumeStalledIOCheck surveille le statut de vos volumes EBS afin de déterminer à quel moment ils sont dégradés. La métrique est une valeur binaire qui renvoie un statut 0 (réussite) ou un statut 1 (échec) selon que le volume EBS peut ou non effectuer des opérations d’E/S. Cette vérification détecte les problèmes sous-jacents liés à l’infrastructure Amazon EBS, tels que les suivants :

  • Problèmes matériels ou logiciels sur les sous-systèmes de stockage sous-jacents aux volumes EBS

  • Problèmes matériels sur l’hôte physique ayant un impact sur l’accessibilité des volumes EBS depuis votre instance EC2

  • Problèmes de connectivité entre l’instance et les volumes EBS

Si la VolumeStalledIOCheck métrique échoue, vous pouvez soit attendre AWS que le problème soit résolu, soit prendre des mesures, telles que le remplacement du volume concerné ou l'arrêt et le redémarrage de l'instance à laquelle le volume est attaché. Dans la plupart des cas, lorsque cette métrique échoue, EBS diagnostique et restaure automatiquement votre volume en quelques minutes. Vous pouvez utiliser l'action Pause I/O AWS Fault Injection Service pour exécuter des expériences contrôlées afin de tester votre architecture et votre surveillance sur la base de cette métrique afin d'améliorer votre résilience face aux défaillances de stockage.

Vous pouvez mesurer la latence des E/S de stockage Amazon EBS à l’aide de VolumeReadOps, VolumeWriteOps, VolumeTotalReadTime et VolumeTotalWriteTime. Vous pouvez utiliser la formule suivante pour surveiller la latence d’E/S moyenne de votre volume :

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

Si votre latence d’E/S est supérieure à vos besoins, vérifiez vos IOPS orientées et assurez-vous que votre application ne cherche pas à gérer plus d’IOPS que celles qui ont été allouées. Vous pouvez utiliser la formule suivante pour surveiller la latence d’IOPS orientées moyenne de votre volume :

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

Si votre application a besoin d’un nombre d’IOPS supérieur à ce que votre volume peut fournir, envisagez d’utiliser l’une des options suivantes :

  • Un volume gp3, io2, ou io1 approvisionné avec suffisamment d’IOPS pour atteindre la latence requise

  • Un volume gp2 plus important qui fournit des performances IOPS de base suffisantes

Les volumes st1 et sc1 basés sur HDD sont conçus pour générer de meilleures performances avec des charges de travail qui tirent parti de la taille d’I/O maximale de 1 024 Kio. Pour déterminer la taille d’I/O moyenne de votre volume, divisez VolumeWriteBytes par VolumeWriteOps. Le même calcul s’applique pour les opérations de lecture. Si la taille d’I/O moyenne est inférieure à 64 Kio, vous devriez pouvoir améliorer les performances en augmentant la taille des opérations d’I/O envoyées à un volume st1 ou sc1.

Note

Si la taille moyenne d’I/O atteint 44 Kio ou s’en rapproche, il est possible que vous utilisiez une instance ou un noyau qui ne prend pas en charge les descripteurs indirects. Tous les noyaux Linux version 3.8 et supérieures les prennent en charge, ainsi que toute instance de la génération actuelle.

BurstBalance affiche l’équilibre du compartiment en rafales des volumes gp2, st1 et sc1 sous forme de pourcentage du solde restant. Lorsque votre compartiment en rafales est épuisé, le I/O du volume (pour volumes gp2) ou le débit de volume (pour les volumes st1 et sc1) est limité au niveau de référence. Vérifiez la valeur BurstBalance pour déterminer si votre volume est limité pour cette raison. Pour obtenir la liste complète des métriques Amazon EBS disponibles, consultez CloudWatch Métriques Amazon pour Amazon EBS et les métriques Amazon EBS pour les instances basées sur Nitro.

Ressources connexes

Pour en savoir plus sur les caractéristiques d’I/O Amazon EBS, consultez la présentation re:Invent suivante : Amazon EBS: Designing for Performance.