Considérations relatives au système Nitro pour le réglage des performances - Amazon Elastic Compute Cloud

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.

Considérations relatives au système Nitro pour le réglage des performances

Le Système Nitro est un ensemble de composants matériels et logiciels élaborés par AWS qui garantissent des performances élevées, une haute disponibilité et un niveau de sécurité élevé. Le système Nitro fournit des fonctionnalités similaires au bare metal qui éliminent les frais de virtualisation et prennent en charge les charges de travail qui nécessitent un accès complet au matériel hôte. Pour des informations plus détaillées, consultez AWS Nitro System.

Tous les types d'instances EC2 de génération actuelle exécutent le traitement des paquets réseau sur les cartes Nitro EC2. Cette rubrique traite de la gestion des paquets de haut niveau sur la carte Nitro, des aspects courants de l'architecture et de la configuration du réseau qui ont un impact sur les performances de traitement des paquets, et des mesures que vous pouvez prendre pour optimiser les performances de vos instances basées sur Nitro.

Les cartes Nitro gèrent toutes les interfaces d'entrée et de sortie (E/S), telles que celles nécessaires aux clouds privés virtuels (VPC). Pour tous les composants qui envoient ou reçoivent des informations sur le réseau, les cartes Nitro agissent comme un dispositif informatique autonome pour le trafic d'E/S, physiquement distinct de la carte mère du système sur laquelle s'exécutent les charges de travail des clients.

Flux de paquets réseau sur les cartes Nitro

Les instances EC2 basées sur le système Nitro disposent de capacités d'accélération matérielle qui permettent un traitement des paquets plus rapide, tel que mesuré par le débit de paquets par seconde (PPS). Lorsqu'une carte Nitro effectue l'évaluation initiale d'un nouveau flux, elle enregistre des informations identiques pour tous les paquets du flux, telles que les groupes de sécurité, les listes de contrôle d'accès et les entrées des tables de routage. Lorsqu'il traite des paquets supplémentaires pour le même flux, il peut utiliser les informations enregistrées pour réduire la surcharge associée à ces paquets.

Votre débit de connexion est mesuré par la métrique des connexions par seconde (CPS). Chaque nouvelle connexion nécessite une surcharge de traitement supplémentaire qui doit être prise en compte dans les estimations de capacité de charge de travail. Il est important de prendre en compte à la fois les métriques CPS et PPS lorsque vous concevez vos charges de travail.

Comment établir une connexion

Lorsqu'une connexion est établie entre une instance basée sur Nitro et un autre point de terminaison, la carte Nitro évalue le flux complet du premier paquet envoyé ou reçu entre les deux points de terminaison. Pour les paquets suivants du même flux, une réévaluation complète n'est généralement pas nécessaire. Il existe toutefois des exceptions. Pour plus d'informations sur les exceptions, consultezPaquets qui n'utilisent pas l'accélération matérielle.

Les propriétés suivantes définissent les deux points de terminaison et le flux de paquets entre eux. Ensemble, ces cinq propriétés sont connues sous le nom de flux à 5 tuples.

  • IP Source

  • Port source

  • IP de destination

  • Port de destination

  • Protocole de communication

La direction du flux de paquets est appelée entrée (entrée) et sortie (sortie). Les descriptions de haut niveau suivantes résument le flux de paquets réseau de bout en bout.

  • Entrée : lorsqu'une carte Nitro gère un paquet réseau entrant, elle l'évalue par rapport aux règles de pare-feu dynamiques et aux listes de contrôle d'accès. Il suit la connexion, la mesure et effectue d'autres actions, le cas échéant. Il transmet ensuite le paquet à sa destination sur le processeur hôte.

  • Sortie : lorsqu'une carte Nitro gère un paquet réseau sortant, elle recherche la destination de l'interface distante, évalue diverses fonctions VPC, applique des limites de débit et effectue les autres actions applicables. Il transmet ensuite le paquet à sa destination de saut suivant sur le réseau.

Conception pour des performances optimales

Pour tirer parti des capacités de performance de votre système Nitro, vous devez comprendre quels sont vos besoins en matière de traitement réseau et comment ces besoins affectent la charge de travail de vos ressources Nitro. Vous pouvez ensuite concevoir des performances optimales pour votre environnement réseau. Les paramètres de votre infrastructure ainsi que la conception et la configuration de la charge de travail des applications peuvent avoir un impact à la fois sur le traitement des paquets et sur les taux de connexion. Par exemple, si votre application présente un taux d'établissement de connexion élevé, tel qu'un service DNS, un pare-feu ou un routeur virtuel, elle aura moins de chances de tirer parti de l'accélération matérielle qui ne se produit qu'une fois la connexion établie.

Vous pouvez configurer les paramètres d'application et d'infrastructure pour rationaliser les charges de travail et améliorer les performances du réseau. Cependant, tous les paquets ne sont pas éligibles à l'accélération. Le système Nitro utilise l'intégralité du flux réseau pour les nouvelles connexions et pour les paquets qui ne sont pas éligibles à l'accélération.

Le reste de cette section se concentrera sur les considérations relatives à la conception des applications et de l'infrastructure afin de garantir que les paquets circulent autant que possible selon le chemin accéléré.

Considérations

Lorsque vous configurez le trafic réseau pour votre instance, de nombreux aspects doivent être pris en compte qui peuvent affecter les performances du PPS. Une fois qu'un flux est établi, la majorité des paquets qui entrent ou sortent régulièrement sont éligibles à l'accélération. Cependant, des exceptions existent pour garantir que les conceptions d'infrastructure et les flux de paquets continuent de répondre aux normes du protocole.

Pour tirer le meilleur parti de votre carte Nitro, vous devez examiner attentivement les avantages et les inconvénients des détails de configuration suivants pour votre infrastructure et vos applications.

Considérations relatives aux infrastructures

La configuration de votre infrastructure peut affecter le flux de paquets et l'efficacité du traitement. La liste suivante inclut quelques points importants à prendre en compte.

Configuration de l'interface réseau avec asymétrie

Les groupes de sécurité utilisent le suivi des connexions pour suivre les informations relatives au trafic entrant et sortant de l'instance. Le routage asymétrique, selon lequel le trafic entre dans une instance via une interface réseau et en sort par une interface réseau différente, peut réduire les performances maximales qu'une instance peut atteindre si les flux sont suivis. Pour plus d'informations sur le suivi des connexions des groupes de sécurité, les connexions non suivies et les connexions suivies automatiquement, consultezSuivi de connexion de groupe de sécurité.

Pilotes réseau

Les pilotes réseau sont régulièrement mis à jour et publiés. Si vos pilotes ne sont pas à jour, cela peut nuire considérablement aux performances. Maintenez vos pilotes à jour pour vous assurer que vous disposez des derniers correctifs et que vous pouvez tirer parti des améliorations de performances, telles que la fonction de trajectoire accélérée qui n'est disponible que pour la dernière génération de pilotes. Les pilotes antérieurs ne prennent pas en charge la fonction de trajectoire accélérée.

Pour tirer parti de la fonctionnalité de chemin accéléré, nous vous recommandons d'installer le dernier pilote ENA sur vos instances.

Instances Linux : pilote ENA Linux 2.2.9 ou version ultérieure. Pour installer ou mettre à jour le pilote ENA Linux depuis le GitHub référentiel Amazon Drivers, consultez la section Compilation du pilote du fichier readme.

Instances Windows : pilote Windows ENA 2.0.0 ou version ultérieure. Pour installer ou mettre à jour le pilote ENA pour Windows, voirInstallation du pilote Elastic Network Adapter (ENA).

Distance entre les points de terminaison

Une connexion entre deux instances de la même zone de disponibilité peut traiter plus de paquets par seconde qu'une connexion entre régions en raison du fenêtrage TCP au niveau de la couche application, qui détermine la quantité de données pouvant être en vol à un moment donné. Les longues distances entre les instances augmentent la latence et diminuent le nombre de paquets que les points de terminaison peuvent traiter.

Considérations relatives à la conception de

Certains aspects de la conception et de la configuration des applications peuvent affecter l'efficacité de votre traitement. La liste suivante inclut quelques points importants à prendre en compte.

Taille du paquet

Des paquets de plus grande taille peuvent augmenter le débit des données qu'une instance peut envoyer et recevoir sur le réseau. Des paquets de plus petite taille peuvent augmenter le taux de traitement des paquets, mais cela peut réduire la bande passante maximale atteinte lorsque le nombre de paquets dépasse les tolérances PPS.

Si la taille d'un paquet dépasse l'unité de transmission maximale (MTU) d'un saut réseau, un routeur situé le long du chemin peut le fragmenter. Les fragments de paquets qui en résultent sont considérés comme des exceptions et sont traités au rythme standard (non accéléré). Cela peut entraîner des variations dans vos performances. Amazon EC2 prend en charge les trames jumbo de 9001 octets, mais tous les services ne le prennent pas en charge. Nous vous recommandons d'évaluer votre topologie lorsque vous configurez le MTU.

Compromis liés au protocole

Les protocoles fiables tels que le TCP sont plus gourmands que les protocoles peu fiables tels que le protocole UDP. La réduction de la surcharge et la simplification du traitement réseau pour le protocole de transport UDP peuvent entraîner un taux de PPS plus élevé, mais au détriment de la fiabilité de la distribution des paquets. Si la fiabilité de la livraison des paquets n'est pas essentielle pour votre application, le protocole UDP peut être une bonne option.

Micro-éclatement

La micro-explosion se produit lorsque le trafic dépasse les limites pendant de brèves périodes au lieu d'être réparti uniformément. Cela se produit généralement à l'échelle de la microseconde.

Supposons, par exemple, que vous disposiez d'une instance capable d'envoyer jusqu'à 10 Gbit/s et que votre application envoie la totalité des 10 Go en une demi-seconde. Cette micro-rafale dépasse la limite autorisée pendant la première demi-seconde et ne laisse rien pour le reste de la seconde. Même si vous avez envoyé 10 Go au cours de la période d'une seconde, les allocations pendant la première demi-seconde peuvent entraîner la mise en file d'attente ou la suppression de paquets.

Vous pouvez utiliser un planificateur réseau tel que Linux Traffic Control pour accélérer votre débit et éviter de provoquer des mises en file d'attente ou des pertes de paquets à la suite de microrafales.

Nombre de flux

Un flux unique est limité à 5 Gbit/s, sauf s'il fait partie d'un groupe de placement de clusters prenant en charge jusqu'à 10 Gbit/s, ou s'il utilise ENA Express, qui prend en charge jusqu'à 25 Gbit/s.

De même, une carte Nitro peut traiter un plus grand nombre de paquets sur plusieurs flux au lieu d'utiliser un seul flux. Pour atteindre le taux de traitement de paquets maximal par instance, nous recommandons d'utiliser au moins 100 flux sur les instances dont la bande passante cumulée est supérieure ou égale à 100 Gbit/s. À mesure que les capacités de bande passante agrégée augmentent, le nombre de flux nécessaires pour atteindre des taux de traitement de pointe augmente également. L'analyse comparative vous aidera à déterminer la configuration dont vous avez besoin pour atteindre des débits de pointe sur votre réseau.

Nombre de files d'attente d'Elastic Network Adapter (ENA)

Par défaut, le nombre maximum de files d'attente ENA est alloué à une interface réseau en fonction de la taille et du type de votre instance. La réduction du nombre de files d'attente peut réduire le taux de PPS maximal atteignable. Nous vous recommandons d'utiliser l'allocation de file d'attente par défaut pour de meilleures performances.

Pour Linux, une interface réseau est configurée avec le maximum par défaut. Pour les applications basées sur le Data Plane Development Kit (DPDK), nous vous recommandons de configurer le nombre maximum de files d'attente disponibles.

Fonctionnalité : surcharge du processus

Des fonctionnalités telles que Traffic Mirroring et ENA Express peuvent augmenter la charge de traitement, ce qui peut réduire les performances absolues de traitement des paquets. Vous pouvez limiter l'utilisation des fonctionnalités ou les désactiver pour augmenter les taux de traitement des paquets.

Suivi des connexions pour maintenir l'état

Vos groupes de sécurité utilisent le suivi des connexions pour stocker des informations sur le trafic à destination et en provenance de l'instance. Le suivi des connexions applique des règles à chaque flux individuel de trafic réseau afin de déterminer si le trafic est autorisé ou refusé. La carte Nitro utilise le suivi du flux pour maintenir l'état du flux. À mesure que de nouvelles règles de groupe de sécurité sont appliquées, davantage de travail est nécessaire pour évaluer le flux.

Note

Les flux de trafic réseau ne sont pas tous suivis. Si une règle de groupe de sécurité est configurée avecConnexions non suivies, aucune tâche supplémentaire n'est requise, à l'exception des connexions qui sont automatiquement suivies pour garantir un routage symétrique lorsqu'il existe plusieurs chemins de réponse valides.

Paquets qui n'utilisent pas l'accélération matérielle

Tous les paquets ne peuvent pas tirer parti de l'accélération matérielle. La gestion de ces exceptions implique une certaine surcharge de traitement, nécessaire pour garantir l'intégrité de vos flux réseau. Les flux réseau doivent respecter de manière fiable les normes de protocole, se conformer aux modifications apportées à la conception du VPC et acheminer les paquets uniquement vers les destinations autorisées. Cependant, les frais généraux réduisent vos performances.

Fragments de paquets

Comme indiqué dans la section Considérations relatives aux applications, les fragments de paquets résultant de paquets dépassant la MTU du réseau sont traités comme des exceptions et ne peuvent pas tirer parti de l'accélération matérielle.

Connexions inactives

Lorsqu'une connexion n'est pas active pendant un certain temps, même si le délai d'expiration de la connexion n'est pas atteint, le système peut annuler sa priorité. Ensuite, si les données arrivent après que la connexion n'a plus été priorisée, le système doit les traiter comme une exception afin de se reconnecter.

Pour gérer vos connexions, vous pouvez utiliser les délais de suivi des connexions pour fermer les connexions inactives. Vous pouvez également utiliser TCP keepalives pour maintenir ouvertes les connexions inactives. Pour plus d’informations, consultez Délai de suivi d’inactivité de la connexion.

Mutation VPC

Les mises à jour des groupes de sécurité, des tables de routage et des listes de contrôle d'accès doivent toutes être réévaluées dans le processus de traitement afin de garantir que les entrées de routage et les règles des groupes de sécurité s'appliquent toujours comme prévu.

Flux ICMP

Le protocole ICMP (Internet Control Message Protocol) est un protocole de couche réseau utilisé par les périphériques réseau pour diagnostiquer les problèmes de communication réseau. Ces paquets utilisent toujours le flux complet.

Optimisez les performances réseau de votre système Nitro

Avant de prendre des décisions de conception ou d'ajuster les paramètres réseau de votre instance, nous vous recommandons de suivre les étapes suivantes pour obtenir les meilleurs résultats :

  1. Comprenez les avantages et les inconvénients des mesures que vous pouvez prendre pour améliorer les performances en les évaluantConsidérations.

    Pour en savoir plus et connaître les meilleures pratiques relatives à la configuration de votre instance, consultez :

    Instances LinuxGuide des meilleures pratiques et d'optimisation des performances du pilote Linux ENA sur le GitHub site Web.

    Instances WindowsMeilleures pratiques pour la configuration des interfaces réseau.

  2. Comparez vos charges de travail avec le nombre de flux actifs de pointe afin de déterminer une base de référence pour les performances de votre application. Avec une référence de performance, vous pouvez tester les variations de vos paramètres ou de la conception de votre application afin de déterminer quelles considérations auront le plus d'impact, en particulier si vous prévoyez de procéder à une mise à l'échelle ou à une extension externe.

La liste suivante contient les actions que vous pouvez effectuer pour optimiser les performances de votre PPS, en fonction des besoins de votre système.

  • Réduisez la distance physique entre deux instances. Lorsque les instances d'envoi et de réception sont situées dans la même zone de disponibilité ou utilisent des groupes de placement de clusters, vous pouvez réduire le nombre de sauts qu'un paquet doit effectuer pour se déplacer d'un point de terminaison à un autre.

  • Utilisez Connexions non suivies.

  • Utilisez le protocole UDP pour le trafic réseau.

  • Pour les instances EC2 dont la bande passante cumulée est supérieure ou égale à 100 Gbit/s, répartissez la charge de travail sur au moins 100 flux individuels afin de répartir le travail de manière uniforme sur la carte Nitro.

Surveiller les performances sur les instances Linux

Vous pouvez utiliser les métriques Ethtool sur les instances Linux pour surveiller les indicateurs de performance réseau des instances tels que la bande passante, le débit de paquets et le suivi des connexions. Pour plus d'informations, voir Contrôlez les performances réseau de votre instance EC2.