Comment puis-je obtenir des performances d'E/S maximales pour mes volumes EBS hébergés sur des instances basées sur EC2 Nitro ?

Lecture de 4 minute(s)
0

J'exécute ma charge de travail sur des instances basées sur Amazon Elastic Compute Cloud (Amazon EC2) Nitro. Je veux tirer le meilleur parti des performances d'E/S des volumes Amazon Elastic Block Store (Amazon EBS) hébergés sur mes instances.

Résolution

1.     Vérifiez si votre volume EBS a atteint son quota d'opérations d'entrée/sortie par seconde (IOPS). La latence peut augmenter lorsque votre volume atteint son quota d'IOPS, ce qui peut avoir un impact sur les performances. Pour en savoir plus, reportez-vous à Comment puis-je optimiser les performances des volumes IOPS provisionnés par Amazon EBS ?
Remarque : si vous utilisez un volume GP2, vérifiez qu'il n'a pas épuisé les crédits de débordement.

2.    Pour utiliser le stockage NVMe, vous devez exécuter l'un des systèmes d'exploitation suivants :

  • Amazon Linux Amazon Machine Image (AMI) ou version ultérieure et noyau 4.12 ou version ultérieure
  • CentOS - 7.0 ou version ultérieure et noyau 3.10 ou version ultérieure
  • Red Hat - 7.0 ou version ultérieure et noyau 3.10 ou version ultérieure
  • Ubuntu 19.10 avec noyau 5.0 ou Ubuntu 18.04.03 avec noyau 5.0 et versions ultérieures
    Remarque : pour ces versions d'Ubuntu, les files d'attente multiples sont activées par défaut.
  • Ubuntu - 16.04 ou 16.10
    Remarque : pour ces versions d'Ubuntu, les planificateurs à files d'attente multiples ne sont pas compilés par le noyau et nécessitent un chargement de module séparé.
  • SUSE 12 ou SUSE 11 avec SP3 ou version ultérieure
  • Windows Server 2008 R2, 2012 R2 et 2016 ou version ultérieure

Vous pouvez également vérifier que la version du noyau prend en charge un planificateur d'E/S doté d'une fonctionnalité de files d'attente multiples. Les planificateurs d'E/S à files d'attente multiples les plus courants sont kyber, mq-deadline et budget fair queue (bfg).

Remarque : pour les systèmes d'exploitation tels qu'Oracle, Linux ou Debian, vous devez utiliser une version du noyau qui inclut ou prend en charge un planificateur d'E/S à files d'attente multiples. CentOS et sa version noyau prennent en charge un planificateur d'E/S à files d'attente multiples.

Si vous utilisez une version antérieure de ces systèmes d'exploitation, vous risquez de constater une baisse des performances d'E/S, car les instances basées sur Nitro utilisent un traitement de files d'attente multiples au niveau de l'hôte. Cela entraîne une incompatibilité entre le planificateur au niveau du système d'exploitation et celui au niveau de l'hôte.

Les demandes passent par plusieurs couches avant que le volume n'intercepte les demandes de lecture ou d'écriture d'E/S soumises au volume EBS. Pour les anciennes versions du noyau utilisant des planificateurs sans files d'attente multiples sur les instances basées sur Nitro, on constate parfois un retard dans la couche du planificateur d'E/S (I2D). Le retard se produit dans les tests et les résultats de référence qui utilisent les outils blktrace, blkparse et btt. Pour en savoir plus sur ces outils, reportez-vous à blktrace, blkparse et btt sur le site Web die.net.

Pour améliorer les performances d'E/S sur les instances basées sur Nitro, CentOS 7 dispose du mécanisme de mise en file d'attente d'E/S par blocs multiples (blk-mq) qui permet aux pilotes de périphériques de mapper les demandes d'E/S à plusieurs files d'attente matérielles ou logicielles. Pour obtenir des performances optimales sur les systèmes basés sur Nitro, il est recommandé d'utiliser un système d'exploitation à jour avec le dernier noyau.

Planificateur d'E/S sur CentOS 6

$cat /sys/block/xvdf/queue/scheduler noop anticipatory deadline \[cfq\]$cat config-2.6.32-754.30.2.el6.x86\_64 | grep -i blk\_mq

Remarque : comme le fichier de configuration du noyau CentOS 6 utilise le planificateur noop, il ne renvoie pas le blk_mq.

Planificateur d'E/S sur Redhat 9 et Kernel 5.14 ou versions ultérieures

cat /sys/block/<EBS device name>/queue/scheduler \[none\] mq-deadline kyber bfq

Avant de choisir un planificateur, il convient de tous les passer en revue en détails. Pour en savoir plus, reportez-vous à Planificateurs de disque disponibles sur le site Web de Red Hat.

Pour mettre à jour le planificateur au niveau du système d'exploitation pendant l'exécution de l'instance EC2, exécutez la commande suivante :

#sudo echo 'kyber'> /sys/block/<EBS device name>/queue/scheduler

Pour modifier définitivement le planificateur d'E/S, vous devez modifier la configuration du grub et mettre à jour le paramètre de l'ascenseur. Les étapes suivantes concernent CentOS et Red Hat Enterprise Linux (RHEL) :

1.    Exécutez la commande suivante :

#sudo vim /etc/default/grubGRUB\_CMDLINE\_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet elevator=kyber"

2.    Exécutez la commande suivante :

#sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Si l'instance est redémarrée, le planificateur d'E/S reste défini.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois