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 performances 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 de systemd, des IRQ SMP, de la direction des paquets de réception (RPS) et de la direction du flux de réception (RFS). Consultez Annexe : Paramètres recommandés pour le interrupt/RPS réglage la liste des 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 un démon cron en cours d'exécution 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 loin des cœurs du processeur de l'agent.
-
Configurez RPS pour éviter que la file d'attente matérielle d'une seule carte d'interface réseau ne devienne un goulot d'étranglement dans le trafic réseau.
-
Configurez RFS pour augmenter le taux d'accès au 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 les premier et deuxième, ainsi que des paires de cœurs hyperthreads. Cela ne doit pas chevaucher les cœurs sélectionnés ci-dessus. (Ex : « 0,1,48,49 » pour une instance hyperthread à 96 processeurs). -
rps_core_maskest un masque de bits hexadécimal indiquant quels processeurs doivent traiter les paquets entrants, chaque chiffre représentant 4 processeurs. Il doit également être séparé par des virgules 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 gérer 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
Coalescence des interruptions Tune Rx : 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-la par l'interface réseau (adaptateur Ethernet) configurée pour recevoir des données. En règle générale, il s'agiteth0de l'interface réseau par défaut attribuée à une instance EC2.
Buffer annulaire Tune Rx - impacte le réseau
Augmentez le nombre d'entrées de sonnerie pour la mémoire tampon en anneau Rx afin d'éviter les pertes ou les dépassements de paquets lors de connexions en rafale. Ajoutez à la 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-la par l'interface réseau (adaptateur Ethernet) configurée pour recevoir des données. En règle générale, il s'agiteth0de l'interface réseau par défaut attribuée à une instance EC2. -
Si vous configurez une instance de
c6ifamille, la commande doit être modifiée pour définir le ring buffer sur8192, au lieu de16384.
Définir 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 fonctionnement du processeur au ralenti en les intel_idle.max_cstate=1 processor.max_cstate=1 max_cstate=1 réglant. 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.
Permet grubby de définir les arguments du noyau. Cela fonctionne à la fois sur Amazon Linux 2023 (UEFI) et Amazon Linux 2, car la configuration du chargeur de grubby démarrage est gérée 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 de l'interface réelle, trouvé en exécutantip link show, partout où ce guide est utiliséeth0.
Ports d'entrée de réserve - réseau d'impacts
Réservez tous les ports de votre plage AwsGroundStationAgentEndpoint d'adresses d'entrée pour éviter les conflits avec l'utilisation du noyau. Un conflit d'utilisation des ports 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 que les réglages soient pris en compte.
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 Régler les interruptions matérielles et les files d'attente de réception - 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 |
|
|
|