31.12. Réglage de la coalescence d'interruption
La coalescence des interruptions est un mécanisme permettant de réduire le nombre d'interruptions générées par une carte réseau. En règle générale, la réduction du nombre d'interruptions permet d'améliorer la latence et les performances globales de votre réseau.
Le réglage de la coalescence d'interruption implique l'ajustement des paramètres qui la contrôlent :
- Le nombre de paquets qui sont combinés en une seule interruption.
- Délai avant la génération d'une interruption.
Les paramètres optimaux de coalescence dépendent des conditions spécifiques du réseau et du matériel utilisé. Par conséquent, il faudra peut-être plusieurs tentatives pour trouver les paramètres qui conviennent le mieux à votre environnement et à vos besoins.
31.12.1. Optimisation de RHEL pour les services sensibles à la latence ou au débit
L'objectif du réglage de la coalescence est de minimiser le nombre d'interruptions nécessaires pour une charge de travail donnée. Dans les situations de haut débit, l'objectif est d'avoir le moins d'interruptions possible tout en maintenant un débit de données élevé. Dans les situations de faible latence, davantage d'interruptions peuvent être utilisées pour gérer rapidement le trafic.
Vous pouvez ajuster les paramètres de votre carte réseau pour augmenter ou diminuer le nombre de paquets qui sont combinés en une seule interruption. Vous pouvez ainsi améliorer le débit ou la latence de votre trafic.
Procédure
Identifiez l'interface réseau qui subit le goulot d'étranglement :
# ethtool -S enp1s0 NIC statistics: rx_packets: 1234 tx_packets: 5678 rx_bytes: 12345678 tx_bytes: 87654321 rx_errors: 0 tx_errors: 0 rx_missed: 0 tx_dropped: 0 coalesced_pkts: 0 coalesced_events: 0 coalesced_aborts: 0
Identifier les compteurs de paquets dont le nom contient "drop", "discard" ou "error". Ces statistiques particulières mesurent la perte réelle de paquets au niveau du tampon de paquets de la carte d'interface réseau (NIC), qui peut être causée par la coalescence de la NIC.
Surveillez les valeurs des compteurs de paquets que vous avez identifiés à l'étape précédente.
Comparez-les aux valeurs attendues pour votre réseau afin de déterminer si une interface particulière présente un goulot d'étranglement. Les signes les plus courants d'un goulot d'étranglement dans le réseau sont, entre autres, les suivants
- Nombreuses erreurs sur une interface réseau
- Perte de paquets élevée
Utilisation intensive de l'interface réseau
NoteD'autres facteurs importants sont par exemple l'utilisation de l'unité centrale, l'utilisation de la mémoire et les entrées/sorties du disque lorsqu'il s'agit d'identifier un goulot d'étranglement dans le réseau.
Visualiser les paramètres de coalescence actuels :
# ethtool enp1s0 Settings for enp1s0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: on MDI-X: Unknown Supports Wake-on: g Wake-on: g Current message level: 0x00000033 (51) drv probe link Link detected: yes
Dans cette sortie, surveillez les champs
Speed
etDuplex
. Ces champs affichent des informations sur le fonctionnement de l'interface réseau et indiquent si les valeurs attendues sont respectées.Vérifier les paramètres actuels de coalescence d'interruption :
# ethtool -c enp1s0 Coalesce parameters for enp1s0: Adaptive RX: off Adaptive TX: off RX usecs: 100 RX frames: 8 RX usecs irq: 100 RX frames irq: 8 TX usecs: 100 TX frames: 8 TX usecs irq: 100 TX frames irq: 8
-
Les valeurs de
usecs
se réfèrent au nombre de microsecondes que le récepteur ou l'émetteur attend avant de générer une interruption. -
Les valeurs de
frames
se réfèrent au nombre de trames que le récepteur ou l'émetteur attend avant de générer une interruption. Les valeurs de
irq
sont utilisées pour configurer la modération d'interruption lorsque l'interface réseau gère déjà une interruption.NoteToutes les cartes d'interface réseau ne permettent pas de signaler et de modifier toutes les valeurs de l'exemple de sortie.
-
La valeur
Adaptive RX/TX
représente le mécanisme adaptatif de coalescence des interruptions, qui ajuste les paramètres de coalescence des interruptions de manière dynamique. En fonction de l'état des paquets, le pilote du NIC calcule automatiquement les valeurs de coalescence lorsqueAdaptive RX/TX
est activé (l'algorithme diffère d'un pilote de NIC à l'autre).
-
Les valeurs de
Modifiez les paramètres de coalescence si nécessaire. Par exemple :
Lorsque
ethtool.coalesce-adaptive-rx
est désactivé, configurezethtool.coalesce-rx-usecs
pour que le délai avant la génération d'une interruption soit de 100 microsecondes pour les paquets RX :# nmcli connection modify enp1s0 ethtool.coalesce-rx-usecs 100
Activer
ethtool.coalesce-adaptive-rx
alors queethtool.coalesce-rx-usecs
est réglé sur sa valeur par défaut :# nmcli connection modify enp1s0 ethtool.coalesce-adaptive-rx on
Red Hat recommande de modifier le paramètre Adaptive-RX comme suit :
-
Les utilisateurs soucieux d'une faible latence (inférieure à 50us) ne doivent pas activer
Adaptive-RX
. -
Les utilisateurs soucieux du débit peuvent probablement activer
Adaptive-RX
sans problème. S'ils ne veulent pas utiliser le mécanisme de coalescence adaptative des interruptions, ils peuvent essayer de fixer des valeurs importantes comme 100us ou 250us àethtool.coalesce-rx-usecs
. - Les utilisateurs qui ne sont pas sûrs de leurs besoins ne devraient pas modifier ce paramètre jusqu'à ce qu'un problème survienne.
-
Les utilisateurs soucieux d'une faible latence (inférieure à 50us) ne doivent pas activer
Réactiver la connexion :
# nmcli connection up enp1s0
Verification steps
Surveillez les performances du réseau et vérifiez si des paquets ont été perdus :
# ethtool -S enp1s0 NIC statistics: rx_packets: 1234 tx_packets: 5678 rx_bytes: 12345678 tx_bytes: 87654321 rx_errors: 0 tx_errors: 0 rx_missed: 0 tx_dropped: 0 coalesced_pkts: 12 coalesced_events: 34 coalesced_aborts: 56 ...
La valeur des champs
rx_errors
,rx_dropped
,tx_errors
, ettx_dropped
doit être égale à 0 ou proche de cette valeur (jusqu'à quelques centaines, en fonction du trafic réseau et des ressources du système). Une valeur élevée dans ces champs indique un problème de réseau. Vos compteurs peuvent avoir des noms différents. Surveillez de près les compteurs de paquets dont le nom contient "drop", "discard" ou "error".Les valeurs de
rx_packets
,tx_packets
,rx_bytes
, ettx_bytes
devraient augmenter avec le temps. Si les valeurs n'augmentent pas, il peut y avoir un problème de réseau. Les compteurs de paquets peuvent avoir des noms différents, selon le pilote de votre carte d'interface réseau.ImportantLa sortie de la commande
ethtool
peut varier en fonction du NIC et du pilote utilisés.Les utilisateurs qui se concentrent sur une latence extrêmement faible peuvent utiliser des mesures au niveau de l'application ou l'API d'horodatage des paquets du noyau à des fins de surveillance.