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.
Optimisez les performances de votre instance EC2
Note
Si vous avez provisionné vos ressources AWS à l'aide CloudFormation de modèles, ces réglages sont automatiquement appliqués. Si vous avez utilisé une AMI ou créé manuellement votre instance EC2, ces réglages de performance doivent être appliqués pour obtenir les performances les plus fiables.
N'oubliez pas de redémarrer votre instance après avoir appliqué un ou plusieurs réglages.
Rubriques
Réglez les interruptions matérielles et les files d'attente de réception, ce qui a un impact sur le processeur et le réseau
Cette section configure l'utilisation du cœur du processeur par systemd, les IRQ SMP, le pilotage des paquets de réception (RPS) et le pilotage du flux de réception (RFS). Consultez Annexe : Paramètres recommandés pour le interrupt/RPS réglage un ensemble de paramètres recommandés en fonction du type d'instance que vous utilisez.
Important
Amazon Linux 2023 uniquement : installez et activez le démon cron avant de continuer.
sudo dnf install -y cronie sudo systemctl enable --now crond
Cette section et les deux suivantes ajoutent des entrées @reboot crontab, qui nécessitent l'exécution d'un démon cron pour prendre effet à chaque démarrage. Sur Amazon Linux 2023, le démon cron n'est pas installé par défaut. Par conséquent, sans les commandes ci-dessus, ces entrées sont écrites mais ne sont jamais exécutées. Sur Amazon Linux 2, le démon cron est déjà installé et activé ; aucune action n'est nécessaire.
-
Éloignez les processus systemd des cœurs du processeur de l'agent.
-
Acheminez les demandes d'interruption matérielle en les éloignant des cœurs du processeur de l'agent.
-
Configurez le RPS pour éviter que la file d'attente matérielle d'une seule carte d'interface réseau ne devienne un goulot d'étranglement pour le trafic réseau.
-
Configurez RFS pour augmenter le taux de réussite du cache du processeur et réduire ainsi la latence du réseau.
Le set_irq_affinity.sh script fourni par le RPM configure tout ce qui précède pour vous. Ajoutez à crontab pour qu'il soit appliqué à chaque démarrage :
echo "@reboot sudo /opt/aws/groundstation/bin/set_irq_affinity.sh '${interrupt_core_list}' '${rps_core_mask}' >> /var/log/user-data.log 2>&1" >>/var/spool/cron/root
-
interrupt_core_listRemplacez-les par des cœurs réservés au noyau et au système d'exploitation, généralement le premier et le second, ainsi que par des paires de cœurs hyperthreadées. Cela ne doit pas se chevaucher avec les cœurs sélectionnés ci-dessus. (Par exemple : « 0,1,48,49 » pour une instance hyperthread à 96 processeurs). -
rps_core_maskest un masque de bits hexadécimal spécifiant quels processeurs doivent traiter les paquets entrants, chaque chiffre représentant 4 processeurs. Il doit également être séparé par une virgule tous les 8 caractères en partant de la droite. Il est recommandé d'autoriser tous les processeurs et de laisser la mise en cache s'occuper de l'équilibrage.-
Pour consulter la liste des paramètres recommandés pour chaque type d'instance, reportez-vous àAnnexe : Paramètres recommandés pour le interrupt/RPS réglage.
-
-
Exemple pour une instance à 96 processeurs :
echo "@reboot sudo /opt/aws/groundstation/bin/set_irq_affinity.sh '0,1,48,49' 'ffffffff,ffffffff,ffffffff' >> /var/log/user-data.log 2>&1" >>/var/spool/cron/root
Tune Rx interrompt la coalescence, ce qui a un impact sur le réseau
La fusion des interruptions permet d'éviter d'inonder le système hôte d'un trop grand nombre d'interruptions et d'augmenter le débit du réseau. Avec cette configuration, les paquets sont collectés et une seule interruption est générée toutes les 128 microsecondes. Ajoutez à crontab pour qu'il soit appliqué à chaque démarrage :
echo "@reboot sudo ethtool -C ${interface} rx-usecs 128 tx-usecs 128 >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root
-
interfaceRemplacez-le par l'interface réseau (adaptateur Ethernet) configurée pour recevoir des données. En général, c'est parceeth0qu'il s'agit de l'interface réseau par défaut attribuée à une instance EC2.
Tune Rx Ring Buffer, impacte le réseau
Augmentez le nombre d'entrées en boucle pour la mémoire tampon Rx afin d'éviter les pertes de paquets ou les dépassements lors de connexions en rafale. Ajoutez au crontab pour qu'il soit correctement configuré à chaque démarrage :
echo "@reboot sudo ethtool -G ${interface} rx 16384 >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root
-
interfaceRemplacez-le par l'interface réseau (adaptateur Ethernet) configurée pour recevoir des données. En général, c'est parceeth0qu'il s'agit de l'interface réseau par défaut attribuée à une instance EC2. -
Si vous configurez une instance
c6ifamiliale, la commande doit être modifiée pour définir le ring buffer sur8192, au lieu de16384.
Définissez les paramètres de démarrage du noyau (dénomination du processeur C-State et de l'interface) : impact sur le processeur et le réseau
Ces paramètres de démarrage du noyau empêchent le processeur de tourner le processeur au ralenti en intel_idle.max_cstate=1 processor.max_cstate=1 max_cstate=1 configurant. L'inactivité du processeur peut entraîner la perte de paquets au début d'un contact. Les paramètres incluent égalementnet.ifnames=0 biosdevname=0, qui renomment l'interface réseau du récepteur eneth0. Comme les autres étapes de réglage décrites dans ce chapitre, ces paramètres prennent effet au redémarrage décrit dansRedémarrer. Vous pouvez les appliquer dans n'importe quel ordre par rapport aux autres sections.
grubbyÀ utiliser pour définir les arguments du noyau. Cela fonctionne à la fois sur Amazon Linux 2023 (UEFI) et Amazon Linux 2 car il grubby gère la configuration du bootloader directement sur les deux.
sudo grubby --update-kernel=ALL --args="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1 max_cstate=1"
Note
L'net.ifnames=0argument renomme l'interface réseau eth0 au prochain démarrage. Les autres sections de réglage et la cible eth0 de configuration de l'agent. Il est donc recommandé d'appliquer ces paramètres et de redémarrer. Si vous choisissez de ne pas appliquer ces paramètres, l'interface conserve son nom par défaut (par exemple, ens5 sur Amazon Linux 2023). Dans ce cas, remplacez le nom réel de l'interface (trouvé en exécutantip link show) partout où ce guide est utiliséeth0.
Ports d'entrée de réserve - impact sur le réseau
Réservez tous les ports de la plage AwsGroundStationAgentEndpoint de ports de votre adresse d'entrée pour éviter tout conflit avec l'utilisation du noyau. Un conflit d'utilisation du port entraînera un échec du contact et de la livraison des données.
echo "net.ipv4.ip_local_reserved_ports=${port_range_min}-${port_range_max}" >> /etc/sysctl.conf
-
Exemple:
echo "net.ipv4.ip_local_reserved_ports=42000-43500" >> /etc/sysctl.conf.
Redémarrer
Une fois que tous les réglages ont été correctement appliqués, redémarrez l'instance pour qu'ils prennent effet.
sudo reboot
Annexe : Paramètres recommandés pour le interrupt/RPS réglage
Cette section détermine les valeurs de paramètres recommandées à utiliser dans la section de réglage Tune Hardware Interrupts and Receive Queues - Impacts sur le processeur et le réseau.
| Family | Type d'instance | $ {interrupt_core_list} | $ {rps_core_mask} |
|---|---|---|---|
|
c7i |
|
|
|
|
c6i |
|
|
|
|
c5 |
|
|
|
|
c5n |
|
|
|
|
m5 |
|
|
|
|
r5 |
|
|
|
|
r5n |
|
|
|
|
g4dn |
|
|
|
|
p4d |
|
|
|
|
p3dn |
|
|
|