Performance des volumes Amazon EBS sur les instances Linux - Amazon Elastic Compute Cloud

Performance des volumes Amazon EBS sur les instances Linux

Plusieurs facteurs, dont les caractéristiques d'I/O et la configuration de vos instances et volumes, peuvent avoir des répercussions sur les performances d'Amazon EBS. Les clients qui suivent les recommandations de nos pages de description détaillée des produits Amazon EBS et Amazon EC2 obtiennent généralement de bonnes performances dès la première utilisation. Toutefois, dans certains cas, vous pouvez être amené à effectuer quelques réglages afin d'enregistrer des performances optimales sur la plateforme. Cette rubrique décrit les bonnes pratiques d'ordre général et les ajustements de performances propres à certains cas d'utilisation. Nous vous recommandons d'optimiser les performances à l'aide des informations provenant de votre charge de travail réelle, en plus des comparaisons, afin de déterminer votre configuration optimale. Maintenant que vous maîtrisez les bases de l'utilisation des volumes EBS, nous allons examiner les performances d'I/O dont vous avez besoin et les options qui vous permettront d'améliorer les performances d'Amazon EBS afin de répondre à ces besoins.

Il se peut que les mises à jour AWS apportées aux types de volume EBS sur le plan des performances ne s'appliquent pas immédiatement à vos volumes existants. Pour bénéficier de performances optimales sur un ancien volume, vous devrez peut-être d'abord effectuer une action ModifyVolume sur celui-ci. Pour plus d'informations, consultez Modification de la taille, la capacité d'IOPS ou le type d'un volume EBS sur Linux.

Conseils sur les performances Amazon EBS

Ces conseils constituent des bonnes pratiques à appliquer pour obtenir des performances optimales à partir de vos volumes EBS, dans différents scénarios d'utilisation.

Utiliser les instances optimisées pour EBS

Sur les instances sans prise en charge d'un débit optimisé pour EBS, le trafic réseau peut se heurter au trafic entre votre instance et vos volumes EBS. Sur les instances optimisées pour EBS, les deux types de trafic sont séparés. Certaines configurations d'instance optimisées pour EBS entraînent des frais supplémentaires (par exemple, C3, R3 et M3), tandis que d'autres sont optimisées pour EBS sans frais supplémentaires (par exemple, M4, C4, C5 et D2). Pour plus d'informations, consultez instances optimisées pour Amazon EBS.

Comprendre comment les performances sont calculées

Lorsque vous mesurez les performances de vos volumes EBS, il est important de comprendre les unités de mesure impliquées et la méthode de calcul des performances. Pour plus d'informations, consultez Caractéristiques d'I/O et surveillance.

Comprendre votre charge de travail

Il existe un lien entre les performances maximales de vos volumes EBS, la taille et le nombre d'opérations d'I/O, et le temps nécessaire pour effectuer chaque action. Chacun de ces critères (performances, I/O et latence) a un impact sur les autres, et chaque application est plus ou moins sensible à un critère ou à un autre. Pour plus d'informations, consultez Comparer les volumes EBS.

Être conscient des pertes de performances lors de l'initialisation des volumes à partir d'instantanés

La latence augmente considérablement la première fois que vous accédez à chaque bloc de données sur un nouveau volume EBS créé à partir d'un instantané. Vous pouvez éviter cette baisse de performances à l'aide de l'une des solutions suivantes :

  • Accédez à chaque bloc avant de placer le volume en production. Ce processus est appelé initialisation (anciennement « préchauffage »). Pour plus d'informations, consultez Initialiser les volumes Amazon EBS.

  • Activez la restauration d'instantané rapide sur un instantané pour vous assurer que les volumes EBS créés à partir de l'instantané sont entièrement initialisés à la création et fournissent instantanément la totalité des performances allouées. Pour plus d'informations, consultez Restauration d'instantané rapide Amazon EBS.

Facteurs qui peuvent dégrader les performances des volumes HDD

Lorsque vous créez un instantané d'un volume HDD à débit optimisé (st1) ou HDD à froid (sc1), les performances peuvent diminuer jusqu'à la valeur de référence du volume pendant que l'instantané est en cours de création. Ce comportement est propre à ces types de volume. Voici d'autres facteurs qui peuvent limiter les performances : débit généré supérieur à celui que l'instance peut accepter, pertes de performance lors de l'initialisation des volumes créés à partir d'un instantané, et quantité excessive d'I/O aléatoires de petite taille sur le volume. Pour plus d'informations sur le calcul du débit des volumes HDD, consultez Types de volume Amazon EBS.

Vos performances peuvent également être affectées si votre application n'envoie pas suffisamment de demandes d'I/O. Il est possible de contrôler ce phénomène en examinant la longueur de file d'attente et la taille d'I/O de votre volume. La longueur de la file d'attente est le nombre de demandes d'I/O en attente, en provenance de votre application et à destination de votre volume. Pour une cohérence optimale, les volumes basés sur HDD doivent conserver une longueur de file d'attente de 4 ou plus (arrondie au nombre entier le plus proche) lors de l'exécution d'I/O séquentielles d'1 Mio. Pour plus d'information sur la manière de garantir des performances constantes sur vos volumes, consultez Caractéristiques d'I/O et surveillance

Accroître la lecture anticipée pour les charges de travail à forte densité de lectures et à haut débit sur st1 et sc1

Certaines charges de travail impliquent une forte densité de lecture et accèdent au périphérique de stockage en mode bloc via le cache d'une page du système d'exploitation (par exemple, à partir d'un système de fichiers). Dans ce cas, afin d'obtenir un débit optimal, nous vous recommandons de configurer le paramètre de lecture anticipée sur 1 Mio. Il s'agit d'un paramètre par périphérique de stockage en mode bloc, qui ne s'applique qu'à vos volumes HDD.

Afin d'examiner la valeur actuelle de lecture anticipée pour vos périphériques de stockage en mode bloc, utilisez la commande suivante :

[ec2-user ~]$ sudo blockdev --report /dev/<device>

Les informations sur les périphériques de stockage en mode bloc s'affichent au format suivant :

RO RA SSZ BSZ StartSec Size Device rw 256 512 4096 4096 8587820544 /dev/<device>

Le périphérique affiché indique une valeur de lecture anticipée de 256 (la valeur par défaut). Multipliez ce nombre par la taille du secteur (512 octets) afin d'obtenir la taille de la mémoire tampon de lecture anticipée (128 Kio ici). Pour définir la valeur de la mémoire tampon sur 1 Mio, utilisez la commande suivante :

[ec2-user ~]$ sudo blockdev --setra 2048 /dev/<device>

Pour vérifier que le paramètre de lecture anticipée affiche maintenant 2 048, exécutez de nouveau la première commande.

N'utilisez ce paramètre que lorsque votre charge de travail se compose d'I/O séquentielles de grande taille. Si elle se compose essentiellement d'I/O aléatoires de petite taille, ce paramètre va dégrader vos performances. En général, si votre charge de travail se compose principalement d'I/O aléatoires ou de petite taille, vous devez envisager d'utiliser un volume SSD à usage général (gp2 et gp3) plutôt qu'un volume st1 ou sc1.

Utiliser un noyau Linux récent

Utilisez un noyau Linux récent avec une prise en charge des descripteurs indirects. Tous les noyaux Linux version 3.8 et supérieures les prennent en charge, ainsi que toute instance EC2 de la génération actuelle. Si votre 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. Pour plus d'informations sur la façon d'obtenir la taille moyenne d'I/O à partir des métriques Amazon CloudWatch, consultez Caractéristiques d'I/O et surveillance.

Pour obtenir un débit optimal sur les volumes st1 ou sc1, nous vous recommandons d'appliquer la valeur 256 au paramètre xen_blkfront.max (pour les versions de noyau Linux antérieures à la 4.6) ou au paramètre xen_blkfront.max_indirect_segments (pour un noyau Linux version 4.6 et supérieures). Le paramètre approprié peut être défini dans la ligne de commande de démarrage de votre système d'exploitation.

Par exemple, dans une AMI Amazon Linux avec un noyau antérieur, vous pouvez l'ajouter à la fin de la ligne du noyau, dans la configuration GRUB disponible dans /boot/grub/menu.lst:

kernel /boot/vmlinuz-4.4.5-15.26.amzn1.x86_64 root=LABEL=/ console=ttyS0 xen_blkfront.max=256

Pour un noyau plus récent, la commande serait semblable à ce qui suit :

kernel /boot/vmlinuz-4.9.20-11.31.amzn1.x86_64 root=LABEL=/ console=tty1 console=ttyS0 xen_blkfront.max_indirect_segments=256

Redémarrez votre instance pour que ce paramètre prenne effet.

Pour plus d'informations, consultez Configuring GRUB. D'autres distributions Linux, en particulier celles qui n'utilisent pas le programme d'amorçage GRUB, peuvent nécessiter une approche différente pour le réglage des paramètres du noyau.

Pour plus d'informations sur les caractéristiques d'I/O EBS, consultez la présentation re:Invent à ce sujet, intitulée Amazon EBS: Designing for Performance.

Utiliser RAID 0 pour optimiser l'utilisation des ressources d'instance

Certains types d'instance peuvent générer un débit d'I/O supérieur à celui que vous pouvez provisionner pour un seul volume EBS. Vous pouvez associer plusieurs volumes dans une configuration RAID 0 afin d'utiliser la bande passante disponible pour ces instances. Pour plus d'informations, consultez Configuration RAID sur Linux.

Suivi des performances à l'aide d'Amazon CloudWatch

Amazon Web Services offre des métriques de performances pour Amazon EBS que vous pouvez analyser et consulter avec Amazon CloudWatch et des contrôles d'état que vous pouvez utiliser afin de surveiller l'intégrité de vos volumes. Pour plus d'informations, consultez Surveiller le statut de vos volumes.