Intel® Ethernet série 700
Guide de réglage des performances Linux
Groupe de réseautage cloud NEX (NCNG)
Rév. 1.2
Décembre 2024
Historique des révisions
Révision | Date | Commentaires |
1.2 | Décembre 2024 | · Ajout de conseils supplémentaires sur la gestion de l'alimentation. · Ajout d'Intel* Turbo Boost. · Ajout du backlog des périphériques réseau. · Ajout de configurations et de réglages spécifiques à la plate-forme. · Ajout de processeurs évolutifs Intel* %eon* de 4e génération. · Ajout d'AMD EPYC. · Mise à jour des capacités matérielles du système de vérification. · Mise à jour d'iPerf2. · Mise à jour d'iPerf3. · Files d'attente Tx/Rx mises à jour. · Modération des interruptions mise à jour. · Taille de bague mise à jour. · Mise à jour du réglage de la plateforme (i40e non spécifique). · Paramètres du BIOS mis à jour. · Contrôle d'état C mis à jour. · Mise à l'échelle de la fréquence du processeur mise à jour. · Paramètres d'application mis à jour. · Paramètres du système d'exploitation/noyau mis à jour. · Transfert IP mis à jour. · Faible latence mise à jour. |
2023er août | Les modifications apportées à ce document incluent : · Ajout de références connexes. · Ajout de « Assurez-vous que le package DDP se charge correctement ». · Ajout de iPerf2. · Ajout de iPerf3. · Ajout de netperf. · Affinité IRQ mise à jour. · Ajout de files d'attente Tx/Rx. · Taille de bague mise à jour. · Ajout de cadres Jumbo. · Ajout de la liaison de l'adaptateur. · Ajout de l'outil Intel svr-info. |
|
1.0 | Mars 2016 | Version initiale (Intel Public). |
Introduction
Ce guide vise à vous guider dans l'optimisation des environnements réseau pour des performances optimales avec les cartes réseau Intel® Ethernet série 700 sous Linux. Il se concentre sur les conditions et paramètres matériels, pilotes et systèmes d'exploitation susceptibles d'améliorer les performances réseau. Il est important de noter que les performances réseau peuvent être affectées par de nombreux facteurs externes ; seuls les plus courants et les plus importants sont abordés dans ce guide.
1.1 Références connexes
- Guide de l'utilisateur pour tous les adaptateurs et périphériques Ethernet Intel ®, prenant en charge Windows et Linux :
Guide de l'utilisateur des adaptateurs et périphériques Ethernet Intel® - Fiche technique:
Fiche technique du contrôleur Ethernet Intel® X710/XXV710/XL710 - Ensemble logiciel complet pour tous les produits Intel ® Ethernet (téléchargez tous les pilotes, NVM, outils, etc.) :
Pack complet de pilotes pour adaptateur Ethernet Intel® - Pack de mise à jour NVM (mémoire non volatile) :
Utilitaire de mise à jour de la mémoire non volatile (NVM) pour la carte réseau Ethernet Intel® série 700 - Outil svr-info pour Linux qui capture les détails matériels et logiciels pertinents d'un serveur : https://github.com/intel/svr-info
- Guide technologique DDP :
Guide de la technologie de personnalisation dynamique des périphériques (DDP) Intel® Ethernet série 700
Liste de contrôle initiale
2.1 Mettre à jour les versions du pilote/micrologiciel
Vérifiez les versions du pilote/firmware à l'aide de ethtool -i ethx.
Mettez à jour les éléments suivants si nécessaire :
- Mettre à jour le pilote i40e
http://sourceforge.net/projects/e1000/files/i40e%20stable/ or https:// downloadcenter.intel.com/ download/24411/Network-Adapter-Driver-for-PCI-E-40- Gigabit-Network-Connections-under-Linux - Mettre à jour le micrologiciel
https://downloadcenter.intel.com/download/24769/NVM-Update-Utility-for-Intel-Ethernet-Converged-Network-Adapter-XL710-X710-Series
2.2 Lisez le fichier README
Vérifiez les problèmes connus et obtenez les dernières instructions de configuration à partir du fichier README file inclus dans le package source i40e.
2.3 Vérifiez que votre emplacement PCI Express (PCIe) est x8
Certains emplacements PCIe x8 sont en réalité configurés comme des emplacements x4. La bande passante de ces emplacements est insuffisante pour un débit maximal avec des périphériques à deux et quatre ports. De plus, si vous insérez un adaptateur compatible PCIe v3.0 dans un emplacement PCIe v2.x, vous ne pourrez pas bénéficier de la bande passante maximale. Le pilote de périphérique détecte ce problème et enregistre le message suivant dans le journal système :
La bande passante PCI-Express disponible pour cette carte n'est pas suffisante pour des performances optimales. Un emplacement PCI-Express x8 est donc nécessaire.
Si cette erreur se produit, déplacez votre adaptateur vers un véritable emplacement PCIe v3.0 x8 pour résoudre le problème.
2.4 Vérifier les capacités matérielles du système
Pour les débits Ethernet 10 Gbit/s, 25 Gbit/s et 40 Gbit/s, des exigences minimales en termes de processeur et de système sont requises. En général, un processeur serveur moderne et une configuration mémoire optimale pour votre plateforme devraient suffire, mais les besoins varient en fonction de votre charge de travail. Tous les canaux mémoire doivent être occupés et le mode de performance mémoire doit être activé dans le BIOS. Vérifiez que votre configuration processeur et mémoire est capable de supporter le niveau de performances réseau requis pour votre charge de travail.
NOTE
Le XL710 est un contrôleur 40 GbE. L'adaptateur 2 x 40 GbE utilisé n'est pas conçu pour fonctionner en 2 x 40 GbE, mais en 1 x 40 GbE avec un port de secours actif. Lors de l'utilisation d'un trafic à débit de ligne impliquant les deux ports, le commutateur interne est saturé et la bande passante combinée entre les deux ports est limitée à XNUMX Gbit/s.
2.4.1 Paramètres de démarrage du noyau
Si la technologie de virtualisation Intel® pour les E/S dirigées (Intel® VT-d) est activée dans le BIOS, Intel recommande que l'IOMMU soit en mode pass-through pour des performances réseau optimales. Cela élimine la surcharge DMA sur le trafic hôte tout en permettant aux machines virtuelles (VM) de bénéficier des avantages d'Intel® VT-d. Pour ce faire, ajoutez la ligne suivante aux paramètres de démarrage du noyau : fommu-pt.
2.5 Assurez-vous que le package DDP se charge correctement
Les pilotes de base 140ea et 140eb ne prennent pas directement en charge la personnalisation dynamique des périphériques (DDP). Pour utiliser DDP avec les périphériques de la série 700, un DDP pro est requis.file peut être appliqué avec l'application testpmd.
Pour plus de détails sur DDP profiles, et comment appliquer un DDP profile avec testpmd sur les périphériques de la série 700, reportez-vous au Guide de la technologie Intel® Ethernet 700 Series Dynamic Device Personalization (DDP).
Pour vérifier si un DDP profile a été chargé avec succès :
testpmd> ddp obtenir la liste 0 Profile le numéro est: 1
NOTE
Si le profile Si le nombre est 0, aucun paquet DDP n'est chargé. En cas d'erreur de chargement du paquet DDP, l'appareil passe par défaut en mode sans échec et de nombreuses fonctionnalités de performance sont indisponibles. Des erreurs liées au chargement du paquet DDP peuvent entraîner des problèmes de performances. Pour connaître la procédure de dépannage, consultez le Guide technologique de personnalisation dynamique des périphériques (DDP) Ethernet série 700 d'Inte/*.
Mesures de performance de base et méthodologie de réglage
3.1 Tests de performance du réseau
Avant de commencer un exercice de réglage, il est important de disposer d'une bonne mesure de référence des performances de votre réseau. En plus d'une première évaluation des performances de votre application/charge de travail spécifique, il est généralement judicieux d'utiliser un benchmark de performances réseau standard pour vérifier le bon état de votre périphérique réseau.
Pour l'optimisation d'un système unique, netperf ou iperf et NetPIPE sont tous des outils open source gratuits et solides qui vous permettent de stresser une connexion et de diagnostiquer les problèmes de performances.
Netperf est performant pour les tests de débit et de latence. NetPIPE est un outil dédié à la latence, mais il peut être compilé pour tout type d'environnement.
NOTE
Le test TCP_RR de netperf renvoie la latence en transactions/s. Il s'agit d'un nombre aller-retour. La latence unidirectionnelle peut être calculée à l'aide de l'équation suivante :
Latence (usec) = (1⁄2) / [Transactions/sec] * 1,000,000 XNUMX XNUMX
3.1.1 iPerf2
Intel recommande iperf2 plutôt qu'iperf3 pour la plupart des analyses comparatives, en raison de sa simplicité d'utilisation et de la prise en charge de plusieurs threads dans une même instance d'application. Intel recommande d'utiliser l'option -P avec 2 à 4 threads pour les connexions 25G et environ 4 à 6 threads pour les connexions 40G.
- Pour exécuter le trafic unidirectionnel du client vers le serveur : commande serveur example: iperf2 -s
Commande client example: iperf2 -c -P - Pour exécuter le trafic bidirectionnel du client vers le serveur (et vice versa) : commande serveur example: iperf2 –s –p
Commande client example:
iperf2 -c -p -P -–duplex intégral OU
iperf2 -c -p -P -d
NOTE
Les options –full-duplex et -d d'iperf2 permettent d'effectuer des tests bidirectionnels. Cependant, l'option –full-duplex est spécifiquement dédiée aux tests full duplex.
NOTE
Lors du test d'iperf2 sur plusieurs ports serveur, l'option -d peut être ajoutée à la commande serveur pour exécuter toutes les sessions serveur en arrière-plan depuis la même fenêtre de terminal. L'option -d peut également être utilisée lorsque la commande serveur est intégrée à une boucle for dans un script.
NOTE
Lors de l'exécution du test de débit du réseau avec un seul flux/thread (par exempleamp(le : P1), les processeurs AMD peuvent ne pas offrir le débit attendu, en particulier les cartes réseau à bande passante plus élevée (si la vitesse est supérieure ou égale à 25 G). Par conséquent, l'épinglage des applications sur des cœurs spécifiques est nécessaire pour atteindre un débit plus élevé. Voir « Paramètres d'application » à la page 22.
3.1.2 iPerf3
Si iperf3 est utilisé, plusieurs instances de l'application sont nécessaires pour bénéficier des avantagestage des files d'attente multithreads, RSS et matérielles. Intel recommande d'exécuter 2 à 4 sessions d'application pour les connexions 25G et 4 à 6 sessions pour les connexions 40G. Chaque session doit spécifier une valeur de port TCP unique à l'aide de l'option -p.
- Pour exécuter le trafic unidirectionnel du client vers le serveur :
Commande serveur example:
iperf3 -s -p
Commande client example:
iperf3 -c -p - Pour exécuter le trafic bidirectionnel du client vers le serveur (et vice versa) :
Commande serveur example:
iperf3 –s –p
Commande client example: iperf3 -c -p -P –-bidir - Pour démarrer plusieurs instances (threads) d'iperf3, la recommandation est d'utiliser une boucle for pour mapper les threads aux ports TCP et d'exécuter iperf3 en arrière-plan en utilisant & pour créer plusieurs processus en parallèle.
Commande serveur example, démarrer 4 threads : port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -s -p $port &”; done; Commande client example, démarrer 4 threads – Transmettre le port de test = « » ; pour i dans {0..3} ; faire port = 520 $ i ; bash -c « iperf3 -c $serverIP -p $port & » ; terminé ; Commande client example, démarrer 4 threads – Recevoir le test port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; done; Pour les connexions 40G, augmentez la boucle for pour créer jusqu'à 6 instances/threads.
NOTE
Lors de l'exécution du test de débit du réseau avec un seul flux/thread (par exempleample: P1), les processeurs AMD peuvent ne pas fournir le débit attendu, en particulier une bande passante plus élevée
Cartes réseau (si la vitesse est supérieure ou égale à 25 G de bande passante). Par conséquent, l'épinglage des applications sur des cœurs spécifiques est nécessaire pour atteindre un débit plus élevé. Voir Paramètres d'application à la page 22 et AMD EPYC à la page 26.
3.1.3 netperf
L'outil netperf est un choix judicieux pour les tests de débit et de latence.
- Le test TCP_STREAM de netperf mesure les capacités de débit du périphérique. Commande serveur example : commande client netserver example: netperf -t TCP_STREAM -l 30 -H
- Le test TCP_RR dans netperf renvoie la latence en transactions/seconde. Il s'agit d'un nombre aller-retour. Il est recommandé d'utiliser l'option -T x,x, où x correspond à la puissance CPU locale du périphérique. La latence unidirectionnelle peut être calculée comme suit : Latence(usec)=(1⁄2)/[Transactions/sec]*1,000 XNUMX,\ Commande serveur example: serveur réseau
Commande client example: netperf -t TCP_RR -l 30 -H -T x,x - Pour démarrer plusieurs instances (threads) de netperf, la recommandation est d'utiliser une boucle for pour mapper les threads aux ports TCP et exécuter netperf en arrière-plan en utilisant & pour créer plusieurs processus en parallèle.
Commande serveur example, démarre 8 threads :
port=””; pour i dans {0..7}; faire port=520$i; bash -c “netserver -L $serverIP -p $port &”; terminé;
Commande client example, démarrer 8 threads : port=””; pour i dans {0..7}; faire port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; terminé;
3.2 Méthodologie de réglage
Concentrez-vous sur un seul réglage à la fois afin de connaître l'impact de chaque modification sur votre test. Plus vous serez méthodique dans le processus de réglage, plus il sera facile d'identifier et de corriger les causes des goulots d'étranglement des performances.
Réglage des paramètres du pilote i40e
4.1 Affinité IRQ
La configuration de l'affinité IRQ de sorte que les interruptions pour différentes files d'attente réseau soient affinées à différents cœurs de processeur peut avoir un impact énorme sur les performances, en particulier sur les tests de débit multithread.
Pour configurer l'affinité IRQ, arrêtez irqbalance, puis utilisez le script set_irq_affinity du paquet source i40e ou épinglez les files d'attente manuellement. Désactivez l'équilibreur IRQ de l'espace utilisateur pour activer l'épinglage des files d'attente :
- systemctl désactive irqbalance
- systemctl stop irqbalance
Utilisation du script set_irq_affinity du package source i40e (recommandé) : - Pour utiliser tous les cœurs :
[chemin-vers-i40epackage]/scripts/set_irq_affinity -X all ethX - Pour utiliser uniquement les cœurs sur le socket NUMA local : [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
- Vous pouvez également sélectionner une plage de cœurs. Évitez d'utiliser cpu0, car il exécute des tâches de temporisation. [chemin-vers-i40epackage]/scripts/set_irq_affinity 1-2 ethX
NOTE
Le script d'affinité active le pilotage des paquets de transmission (XPS) dans le cadre du processus d'épinglage lorsque l'option -x est spécifiée. Lorsque XPS est activé, Intel recommande de désactiver irqbalance, car l'équilibrage du noyau avec XPS peut entraîner des performances imprévisibles. Le script d'affinité désactive XPS lorsque l'option -X est spécifiée. La désactivation de XPS et l'activation des files d'attente symétriques sont avantageuses pour les charges de travail où les performances optimales sont obtenues lorsque le trafic Tx et Rx est traité sur la ou les mêmes paires de files d'attente.
La configuration des files d'attente symétriques sous Linux implique le réglage des paramètres du pilote d'interface réseau pour activer les files d'attente de réception symétriques (Rx) et les files d'attente de transmission symétriques (Tx) pour les adaptateurs réseau pris en charge.
NOTE
- Les files d'attente symétriques sont une fonctionnalité réseau avancée et tous les adaptateurs réseau ou pilotes de la série 700 ne les prennent pas en charge.
- Assurez-vous de disposer du pilote et du support matériel nécessaires avant de tenter de configurer des files d'attente symétriques.
Pour configurer des files d’attente symétriques, suivez ces étapes générales :
- Modifier la configuration de l'interface réseau File:Utilisez un éditeur de texte (par ex.ample, vi, nano ou gedit) pour modifier la configuration de l'interface réseau file. Le file se trouve généralement sous le répertoire /etc/sysconfig/network-scripts/ et porte un nom tel que ifcfg-ethX, où ethX est le nom de votre interface réseau.
- Ajoutez les paramètres de file d'attente symétrique. Ajoutez les lignes suivantes à la configuration de l'interface réseau. file: ETHTOOL_OPTS=”rx-queues 8 tx-queues 8″
- Redémarrez le service réseau.
Après avoir effectué les modifications, redémarrez le service réseau pour appliquer la nouvelle configuration. sudo systemctl restart network
Manuellement:
-
Recherchez les processeurs attachés à chaque nœud en utilisant : numactl –hardware lscpu
-
Trouvez les masques de bits pour chacun des processeurs :
- En supposant les cœurs 0 à 11 pour le nœud 0 : [1,2,4,8,10,20,40,80,100,200,400,800, XNUMX, XNUMX, XNUMX, XNUMX, XNUMX, XNUMX, XNUMX, XNUMX, XNUMX, XNUMX, XNUMX]
- Recherchez les IRQ assignées au port en cours d'attribution : grep ethX /proc/interrupts et notez les valeurs IRQ Par exempleample, 181-192 pour les 12 vecteurs chargés.
- Affichez la valeur d'affinité SMP dans l'entrée IRQ correspondante. Notez que cette opération doit être effectuée pour chaque entrée IRQ : echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity Afficher l'affinité IRQ :
- Pour afficher l’affinité IRQ pour tous les cœurs : /scripts/set_irq_affinity -s ethX
- Pour afficher uniquement les cœurs sur le socket NUMA local : /scripts/set_irq_affinity -s ethX local
- Vous pouvez également sélectionner une gamme de cœurs : /scripts/set_irq_affinity -s 40-0-8,16 ethX
NOTE
Le script set_irq_affinity prend en charge l'indicateur -s dans la version 40 et ultérieure du pilote i2.16.11e.
4.2 Files d'attente Tx/Rx
Le nombre de files d'attente par défaut activées pour chaque port Ethernet par le pilote à l'initialisation est égal au nombre total de processeurs disponibles sur la plateforme. Cette configuration est adaptée à de nombreuses plateformes et configurations de charges de travail. Cependant, sur les plateformes dotées d'un nombre élevé de cœurs et/ou d'une densité de ports Ethernet élevée, cette configuration peut entraîner des conflits de ressources. Il peut donc être nécessaire, dans certains cas, de modifier la valeur par défaut de chaque port du système.
Le nombre par défaut de files d'attente Tx/Rx peut varier selon le modèle et la version du pilote. Vous pouvez ajuster ce nombre à l'aide de la commande ethtool -L ci-dessous.
NOTE
Dans ce cas, Intel recommande de réduire le nombre de files d'attente par défaut pour chaque port à un nombre ne dépassant pas le nombre de processeurs disponibles dans le nœud NUMA local du port de l'adaptateur. Dans certains cas, lors de l'équilibrage des ressources sur des implémentations à nombre de ports élevé, il peut être nécessaire de réduire encore davantage ce nombre.
Pour modifier la configuration de la file d’attente :
L'exemple suivantample définit le port sur 32 files d'attente Tx/Rx : ethtool -L ethX combined 32
Example résultat :
ethtool -l ethX
Paramètres de canal pour ethX : maximums prédéfinis :
Réception : 96
TX : 96
Autre: 1
Combiné : 96
Paramètres matériels actuels :
Réception : 0
TX : 0
Autre: 1
Combiné : 32
4.3 Interrompre la modération
La modération adaptative des interruptions est activée par défaut et vise à offrir un équilibre entre faible utilisation du processeur et performances élevées. Vous pouvez toutefois essayer d'ajuster manuellement les paramètres d'interruption en fonction de votre cas d'utilisation.
La plage de 0 à 235 microsecondes offre une plage effective de 4,310 250,000 à 2 XNUMX interruptions par seconde. La valeur de rx-μsecs-high peut être définie indépendamment de rx-μsecs et tx-μsecs dans la même commande ethtool, et est également indépendante de l'algorithme de modération adaptative des interruptions. Le matériel sous-jacent prend en charge la granularité par intervalles de XNUMX microsecondes ; des valeurs adjacentes peuvent donc entraîner le même taux d'interruptions.
- Pour désactiver la modération des interruptions adaptatives : ethtool -C ethX adaptive-rx off adaptive-tx off
- Pour activer la modération des interruptions adaptatives : ethtool -C ethX adaptive-rx on adaptive-tx on
Un bon point de départ pour un réglage général est de 84 μs, soit environ 12000 84 interruptions/s. Si vous constatez que les compteurs rx_dropped s'exécutent pendant le trafic (avec ethtool -S ethX), votre processeur est probablement trop lent, votre taille d'anneau de l'adaptateur est insuffisante (ethtool -G) pour contenir les paquets pendant XNUMX μs, ou votre taux d'interruption est trop faible.
- Pour définir la modération des interruptions sur un taux d'interruption fixe de 84 μs entre les interruptions (12000 84 interruptions/s) : ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 62 La valeur suivante à essayer, si vous n'êtes pas au maximum de l'utilisation du processeur, est de XNUMX μs. Cela utilise plus de processeur, mais cela dessert les tampons plus rapidement et nécessite moins de descripteurs (taille de l'anneau, ethtool -G).
- Pour définir la modération des interruptions sur un taux d'interruption fixe de 62 usecs entre les interruptions (16000 62 interruptions/s). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs XNUMX
Si les compteurs rx_dropped augmentent pendant le trafic (avec ethtool -S ethX), votre processeur est probablement trop lent, la taille de l'anneau de l'adaptateur ne dispose pas de suffisamment de tampons (ethtool -G) ou le taux d'interruption est trop faible. Si l'utilisation du processeur n'est pas maximale, vous pouvez augmenter le taux d'interruption en diminuant la valeur de l'ITR. Cela consomme davantage de processeur, mais accélère le traitement des tampons et nécessite moins de descripteurs (taille de l'anneau, ethtool -G).
Si votre processeur est à 100 %, il est déconseillé d'augmenter le taux d'interruption. Dans certaines circonstances, comme une charge de travail limitée par le processeur, il peut être judicieux d'augmenter la valeur μs pour libérer davantage de temps processeur pour d'autres applications.
Si vous avez besoin de performances à faible latence et/ou disposez de suffisamment de CPU à consacrer au traitement réseau, vous pouvez désactiver entièrement la modération des interruptions, ce qui permet aux interruptions de se déclencher aussi rapidement que possible. - Pour désactiver la modération des interruptions ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0
NOTE
Lors de l'exécution avec la modération des interruptions désactivée, le taux d'interruptions sur chaque file d'attente peut être très élevé. Pensez à inclure le paramètre rx-usec-high pour définir une limite supérieure du taux d'interruptions. La commande suivante désactive la modération adaptative des interruptions et autorise un maximum de 5 microsecondes avant d'indiquer qu'une réception ou une transmission est terminée. Au lieu de générer jusqu'à 200,000 50,000 interruptions par seconde, elle limite le nombre total d'interruptions par seconde à 20 5 via le paramètre rx-usec-high. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 5 rx-usecs 80 txusecs 100 Essayez d'ajuster le temporisateur de coalescence de transmission/réception/haute priorité à une valeur supérieure (150/200/25/20) ou inférieure (10/5/XNUMX/XNUMX) pour trouver la valeur optimale pour la charge de travail.
4.4 Taille de la bague
Si vous constatez des compteurs rx_dropped dans ethtool -S ethX (rx_dropped, rx_dropped.nic) ou si vous suspectez une pression sur le cache avec plusieurs files d'attente actives, vous pouvez essayer d'ajuster la taille de l'anneau par défaut. La valeur par défaut est de 512, la valeur maximale est de 4096 XNUMX.
- Pour vérifier les valeurs actuelles : ethtool -g ethX
Si vous soupçonnez que le manque de mise en mémoire tampon provoque des baisses du taux d'interruption actuel, vous pouvez d'abord essayer le maximum, puis le minimum, puis continuer dans une recherche binaire jusqu'à ce que vous obteniez des performances optimales.
Si une pression sur le cache est suspectée (plusieurs files d'attente actives), réduire les tampons par défaut peut améliorer l'efficacité d'Intel® Data Direct I/O (Intel® DDIO). Intel recommande d'essayer 128 ou 256 par file d'attente, sachant qu'une augmentation du taux d'interruption via ethtool -C peut être nécessaire pour éviter une augmentation de rx_dropped. - Pour définir la taille de l'anneau sur une valeur fixe : ethtool -G eth12 rx 256 tx 256
NOTE
Pour corriger les pertes de paquets Rx détectées avec ethtool -S ethX|grep drop, envisagez d'augmenter la taille de l'anneau à 4096. Expérimentez pour trouver le meilleur paramètre pour la charge de travail, mais faites attention à une utilisation excessive de la mémoire avec des valeurs plus élevées.
4.5 Contrôle de flux
Le contrôle de flux de couche 2 peut avoir un impact considérable sur les performances TCP et il est recommandé de le désactiver pour la plupart des charges de travail. Une exception possible est le trafic en rafales, où les rafales ne durent pas longtemps.
Le contrôle de flux est désactivé par défaut.
- Pour activer le contrôle de flux : ethtool -A ethX rx on tx on
- Pour désactiver le contrôle de flux : ethtool -A ethX rx off tx off
NOTE
Vous devez disposer d'un partenaire de liaison capable de contrôler le flux pour activer avec succès le contrôle de flux.
4.6 Trames étendues
Lorsque l'environnement de trafic attendu comprend le transfert de gros blocs de données, il peut être judicieux d'activer la fonctionnalité Jumbo Frame. La prise en charge des Jumbo Frames s'active en modifiant l'unité de transmission maximale (MTU) sur une valeur supérieure à la valeur par défaut de 1500 XNUMX. Cela permet au périphérique de transférer des données par paquets plus volumineux au sein de l'environnement réseau. Ce paramètre peut améliorer le débit et réduire l'utilisation du processeur pour les charges de travail d'E/S importantes. Cependant, il peut avoir un impact sur les charges de travail à petits paquets ou sensibles à la latence.
NOTE
Les trames Jumbo ou les paramètres MTU plus grands doivent être correctement configurés dans votre environnement réseau.
Utilisez la commande ifconfig pour augmenter la taille de l'unité MTU. Par exempleample, entrez ce qui suit, où est le numéro d'interface : ifconfig mtu 9000 en hausse
Alternativement, vous pouvez utiliser la commande ip comme suit : ip link set mtu 9000 dev configuration de lien IP dev
Réglage de la plateforme (i40e non spécifique)
5.1 Paramètres du BIOS
- Activez Intel® VT-d pour les charges de travail de virtualisation.
- L'hyperthreading (processeurs logiques) peut affecter les performances. Essayez de l'activer ou de le désactiver en fonction de votre charge de travail.
- La technologie Intel® Turbo Boost permet aux cœurs du processeur de fonctionner à une fréquence supérieure à la fréquence de base du processeur. L'activation de la technologie Intel® Turbo Boost peut améliorer les performances de nombreuses charges de travail, mais elle consomme davantage d'énergie pour maintenir les cœurs à une fréquence plus élevée. Testez l'activation/désactivation de la technologie Turbo Boost pour votre charge de travail.
NOTE
Les fréquences turbo ne sont pas garanties si la plateforme subit une utilisation globale élevée du processeur. Les fréquences turbo plus élevées diminuent à mesure que l'utilisation globale du processeur augmente.
5.2 Gestion de l'alimentation
La gestion de l'alimentation peut avoir un impact sur les performances, notamment pour les charges de travail à faible latence. Si les performances sont prioritaires par rapport à la réduction de la consommation d'énergie, Intel recommande d'expérimenter différentes manières de limiter les effets de la gestion de l'alimentation. Il existe de nombreuses façons de limiter la gestion de l'alimentation, via les outils du système d'exploitation, les paramètres du BIOS et les paramètres de démarrage du noyau. Choisissez la méthode et le niveau les plus adaptés à votre environnement.
5.2.1 Contrôle de l'état C
La limitation de l’entrée de l’état C à CO ou C1 améliore les performances et augmente l’utilisation de l’énergie.
La désactivation de l'entrée d'état du package CPU C6 peut améliorer les performances du réseau. Cependant, cela augmente la consommation d'énergie.
Les options suivantes sont disponibles :
- Contrôler dynamiquement l'entrée de l'état C :
Ouvrir
/dev/cpu_dma_latency et écrivez-y la latence maximale autorisée.
NOTE
Il existe un petit programme appelé cpudmalatency.c qui peut être téléchargé depuis la communauté open source, compilé et exécuté depuis la ligne de commande pour faire exactement cela.
L'exemple suivantample permet cinq μs de temps de réveil, et permet ainsi l'entrée C1 : cpudmalatency 5 &
- Limitez l'état C maximal dans les paramètres de démarrage du noyau :
Pour les processeurs Intel : intel_idle.max_cstates=1
Pour les processeurs non Intel : processor.max_cstates=1 - Utilisez la commande cpupower pour vérifier et désactiver l'état C6 du processeur : Vérifiez : cpupower monitor ou cpupower idle-info
Désactiver C6 : cpupower idle-set -d3 ou
Désactiver les états C : cpupower idle-set -D0
Remarques :
- Désactivez les états C sur le processeur si le serveur est équipé de processeurs Intel® Xeon® Scalable de 4e génération. Lorsque l'HyperThreading est activé ou désactivé, la désactivation des états d'inactivité (-D0) empêche les cœurs de passer en mode basse consommation pendant les périodes d'inactivité et réduit le temps de latence du processeur pour passer de l'état inactif à l'état actif.
- La gestion de l'énergie du processeur Intel® Xeon® Scalable de 4e génération est extrêmement rigoureuse. Pour éviter que les cœurs ne passent en mode basse consommation, essayez de réduire leur nombre afin de les maintenir en veille plus longtemps (ethtool -L). combiné ). De plus, liez les interruptions à des cœurs spécifiques en définissant l'affinité IRQ (le plus souvent avec -x local ou la liste des cœurs du processeur) et assurez-vous que la charge de travail s'exécute sur ces mêmes cœurs avec taskset ou numactl. Cela améliore les performances en maintenant les cœurs actifs et en optimisant la gestion des interruptions.
Activer C6 :
puissance du processeur inactive-set -d3
Activer les états C :
cpupower idle-set -E
- Une autre méthode consiste à utiliser l'outil Tuned (inclus avec de nombreuses distributions Linux) pour définir un paramètre de performance.file. Ces profiles modifient plusieurs paramètres du système d'exploitation pouvant affecter les performances de nombreuses applications. Il a été constaté que le débit réseaufile apporte une amélioration à la plupart des charges de travail.
Vérifier:
tuned-adm actif
Ensemble:
tuned-adm profile débit du réseau
NOTE
Le service Tuned doit être en cours d'exécution pour les commandes ci-dessus. Pour vérifier/redémarrer, utilisez la commande suivante : systemctl status tuned systemctl restart tuned
Vous pouvez également interdire toute entrée d'état C en ajoutant ce qui suit à la ligne de démarrage du noyau :
inactif=sondage - Limitez l'état C via les paramètres de gestion de l'alimentation du BIOS du système, qui peuvent avoir un impact sur les performances.file disponible.
Des outils tels que turbostat ou x86_energy_perf_policy peuvent être utilisés pour vérifier ou définir les paramètres de gestion de l'alimentation.
5.2.2 Gestion de l'alimentation PCIe
La gestion de l'alimentation en état actif (ASPM) active un état de consommation plus faible pour les liaisons PCIe lorsqu'elles ne sont pas utilisées. Cela peut entraîner une latence plus élevée sur les périphériques réseau PCIe ; Intel recommande donc de désactiver ASPM pour les charges de travail sensibles à la latence. Pour désactiver ASPM, ajoutez la commande suivante à la ligne de démarrage du noyau : pcie_aspm=off
5.2.3 Mise à l'échelle de la fréquence du processeur
La mise à l'échelle de la fréquence du processeur (ou de la vitesse du processeur) est une technique de gestion de l'énergie sous Linux qui ajuste la vitesse de l'horloge système à la volée pour économiser l'énergie et la chaleur. Tout comme les états C, cette technique peut entraîner une latence indésirable sur les connexions réseau.
L'outil cpupower peut également être utilisé pour vérifier et modifier les valeurs par défaut et les limites des performances du processeur :
- Vérifier : moniteur d'alimentation du processeur ou
- Définir les processeurs en mode performance : cpupower frequency-set -g performance
NOTE
Les modifications apportées aux limites de fréquence du processeur peuvent avoir un impact sur de nombreuses charges de travail et peuvent désactiver d’autres fonctionnalités, telles que le mode turbo du processeur.
Pour désactiver la mise à l'échelle de la fréquence du processeur, désactivez le service d'alimentation du processeur à l'aide des commandes suivantes :
systemctl stop cpupower.service
systemctl désactive cpupower.service
5.2.4 Conseils supplémentaires sur la gestion de l'alimentation
Des détails supplémentaires sont fournis dans ce document de haut niveau.view de nombreuses fonctionnalités de gestion de l'alimentation des processeurs Intel® Xeon® Scalable de 3e génération, ainsi que des conseils sur la manière dont ces fonctionnalités peuvent être intégrées au niveau de la plateforme : https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
La technologie Intel® Turbo Boost accélère le processeur en cas de besoin, mais peut consommer davantage d'énergie. Désactiver Turbo Boost maintient la vitesse du processeur à un niveau constant, vous offrant ainsi des performances constantes pour des charges de travail spécifiques.
5.4 Pare-feu
Les pare-feu peuvent avoir un impact sur les performances, en particulier sur les performances de latence.
Désactivez iptables/firewalld si cela n'est pas nécessaire.
5.5 Paramètres de l'application
Souvent, un seul thread (correspondant à une seule file d'attente réseau) ne suffit pas à atteindre une bande passante maximale. Certaines architectures de plateformes, comme AMD, ont tendance à perdre davantage de paquets Rx avec un seul thread que les plateformes équipées de processeurs Intel.
Envisagez d'utiliser des outils comme taskset ou numactl pour attacher des applications au nœud NUMA ou aux cœurs de processeur locaux du périphérique réseau. Pour certaines charges de travail, comme les E/S de stockage, le déplacement de l'application vers un nœud non local présente des avantages.
Essayez d’augmenter le nombre de threads utilisés par votre application si possible.
5.6 Version du noyau
La plupart des noyaux modernes intégrés sont relativement bien optimisés en termes de performances, mais, selon votre cas d'utilisation, une mise à jour du noyau peut améliorer les performances. Le téléchargement du code source permet également d'activer/désactiver certaines fonctionnalités avant la compilation du noyau.
5.7 Paramètres du système d'exploitation/noyau
Consultez les guides de réglage du système d'exploitation, tels que le Guide de réglage des performances réseau de Red Hat Enterprise Linux, pour plus d'informations sur le réglage général du système d'exploitation.
Certains paramètres courants à ajuster sont répertoriés dans le tableau suivant. Notez qu'il ne s'agit que de points de départ suggérés et que modifier les valeurs par défaut peut augmenter la consommation de ressources du système. Bien qu'augmenter les valeurs puisse améliorer les performances, il est nécessaire de tester différentes valeurs pour déterminer celle qui convient le mieux à un système, une charge de travail et un type de trafic donnés.
Les paramètres du noyau sont configurables à l'aide de l'utilitaire sysctl sous Linux comme indiqué ci-dessous.
À view les valeurs par défaut pour rmem et wmem sur le système :
sysctl net.core.rmem_default
sysctl net.core.wmem_default
Définissez les valeurs au maximum (16 Mo) :
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Les tailles de tampon de socket, également appelées tampon de réception (rmem) et tampon de transmission (wmem), sont des paramètres système qui spécifient la quantité de mémoire réservée au trafic réseau entrant et sortant.
L'exécution de sysctl sans l'argument -w répertorie le paramètre avec son paramètre actuel.
Réglage de la pile | Description |
net.core.rmem_default | Taille de la fenêtre de réception par défaut |
net.core.wmem_default | Taille de la fenêtre de transmission par défaut |
net.core.rmem_max | Taille maximale de la fenêtre de réception |
net.core.wmem_max | Taille maximale de la fenêtre de transmission |
net.core.optmem_max | Mémoire tampon d'option maximale |
net.core.netdev_max_backlog | Arriéré de paquets non traités avant que le noyau ne commence à les supprimer |
net.ipv4.tcp_rmem | Réserve de mémoire pour les tampons de lecture TCP |
net.ipv4.tcp_wmem | Réserve de mémoire pour les tampons d'envoi TCP |
Les paramètres du noyau, de la pile réseau, du gestionnaire de mémoire, de la vitesse du processeur et de la gestion de l'alimentation peuvent avoir un impact important sur les performances du réseau. Il est souvent recommandé d'appliquer des paramètres de débit réseau.file en utilisant la commande tuned. Cela modifie certains paramètres du système d'exploitation pour privilégier les applications réseau.
Vérifier:
tuned-adm actif
Ensemble:
tuned-adm profile débit du réseau
5.8 Backlog des périphériques réseau
Cette fonctionnalité améliore les performances du réseau en gérant efficacement le trafic entrant, en réduisant la perte de paquets, en diminuant la latence et en augmentant le débit. Cela se traduit par une meilleure expérience utilisateur et une réactivité système plus rapide.
Par défaut, cette option est activée sur la plupart des systèmes d'exploitation Linux. Pour vérifier la valeur par défaut :
sysctl net.core.netdev_max_backlog
La valeur maximale de netdev_max_backlog peut varier en fonction de facteurs tels que la version du noyau, le matériel, la mémoire et la charge de travail. Dans de nombreux cas, 8192 8192 est considérée comme une valeur acceptable. sysctl -w net.core.netdev_max_backlog=XNUMX
5.9 Configurations et réglages spécifiques à la plate-forme
5.9.1 Processeurs Intel® Xeon® Scalable de 4e génération
La gestion de l'énergie du processeur Intel® Xeon® Scalable de 4e génération est extrêmement agressive par rapport à celle des processeurs Intel® Xeon® Scalable de 3e génération. Pour éviter que les cœurs ne passent en mode basse consommation, essayez de réduire leur nombre d'utilisations afin de les maintenir actifs plus longtemps.
Paramètres BIOS recommandés pour des performances optimales
- Activation/désactivation de l'hyperthreading (en fonction des exigences de charge de travail et des objectifs de performances) sur le processeur.
- Configurer le système profile à la Performance pour une performance maximale.
NOTE
Cela entraîne une consommation d'énergie plus élevée - Définissez la gestion de l'alimentation du processeur sur Performances maximales pour donner la priorité aux performances maximales du processeur par rapport à l'efficacité énergétique.
- Activer Turbo Boost. Désactiver Turbo Boost dans les paramètres du BIOS système empêche généralement le processeur d'augmenter dynamiquement sa fréquence d'horloge au-delà de sa fréquence de base.
- NOTE
La désactivation de Turbo Boost peut être adaptée à certains cas d'utilisation où des performances constantes, une efficacité énergétique ou une gestion thermique sont prioritaires par rapport aux performances maximales. - Désactivez la fonctionnalité de virtualisation d'E/S à racine unique (SR-IOV) si le système n'utilise pas de technologies de virtualisation.
- Désactivez les états C pour demander au processeur de rester actif et éviter d'entrer dans des états d'inactivité plus profonds.
- Désactivez C1E pour garantir que le processeur reste actif et n'entre pas dans l'état d'inactivité C1E.
- Réglez la fréquence uncore au maximum pour indiquer au système de fonctionner à la fréquence la plus élevée disponible.
- Sur les plates-formes Dell, définissez l'émulation de cœur de table de description APIC multiple (MADT) sur Linéaire (ou Round-Robin selon le BIOS) pour fournir un mappage clair et prévisible des cœurs de processeur.
Réglages de niveau de système d'exploitation recommandés pour des performances optimisées
- Définissez le régulateur de mise à l'échelle de la fréquence du processeur sur les performances. cpupower frequency-set -g performance cpupower frequency-info
- Désactiver les états C. cpupower idle-set -D0
- Définissez les tampons Rx (rmem) et Tx (wmem) du cœur sur la valeur maximale. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
- Définir le backlog des périphériques réseau. sysctl -w net.core.netdev_max_backlog=8192
- Ensemble réglé profile (en fonction de la charge de travail pour le débit/la latence).
tuned-adm profile débit du réseau
Réglages de niveau d'adaptateur recommandés pour des performances optimisées
- Limitez le nombre de files d'attente à utiliser pour le trafic applicatif. Utilisez le nombre minimal de files d'attente requis pour maintenir actifs les cœurs de processeur associés et éviter ainsi leur inactivité prolongée (à adapter à la charge de travail) : ethtool -L combiné 32
- Définir les taux de modération des interruptions. ethtool -C adaptive-rx désactivé adaptive-tx désactivé rx-usecs-high 50 rx-usecs 50 tx-usecs 50
Essayez d'ajuster le temporisateur de fusion de transmission/réception/haute priorité à une valeur plus élevée (80/100/150/200) ou plus basse (25/20/10/5) pour trouver la valeur optimale pour la charge de travail. - Définir les tailles de bague Rx/Tx. ethtool -G rx 4096 tx 4096
NOTE
Si vous constatez des pertes de paquets Rx avec ethtool -S| grep drop, essayez de réduire la taille de l'anneau à < 4096 XNUMX. Essayez de trouver la valeur optimale pour la charge de travail où les paquets ne sont pas perdus. - Définissez l'affinité IRQ. Utilisez les cœurs locaux de la carte réseau ou un mappage de cœur spécifique (où le nombre de cœurs est égal au nombre de files d'attente défini dans la section 1, page 26). systemctl stop irqbalance set_irq_affinity -X local OU set_irq_affinity -X
5.9.2 AMD EPYC
Les processeurs AMD EPYC sont des processeurs puissants conçus pour les serveurs et les centres de données, basés sur l'architecture Zen d'AMD. Les paramètres ci-dessous proviennent de la série EPYC de 4e génération d'AMD.
Paramètres BIOS recommandés pour des performances optimales
- Activez le mode personnalisé pour permettre aux utilisateurs d'ajuster les performances du processeur, la consommation d'énergie et d'autres paramètres. Cela permet d'optimiser le système pour un équilibre optimal entre performances et efficacité énergétique.
- Activez l'augmentation des performances de base pour permettre au processeur d'augmenter automatiquement sa vitesse pour gérer des tâches plus intensives, améliorant ainsi les performances globales.
- Désactivez le contrôle global de l'état C pour empêcher le processeur d'entrer dans des états d'économie d'énergie plus profonds appelés états C, qui peuvent maintenir la réactivité.
NOTE
La désactivation des états C peut entraîner une consommation d'énergie supplémentaire et une augmentation des températures thermiques. Surveillez ces deux paramètres pour la charge de travail. - Activez/désactivez le multithreading simultané (SMT) sur le processeur, en fonction des besoins de charge de travail et des objectifs de performances. Le SMT est équivalent à l'HyperThreading sur les processeurs Intel.
NOTE
Pour des performances optimisées, reportez-vous à Réglage des paramètres du pilote i40e à la page 13 et Réglage de la plate-forme (i40e non spécifique) à la page 19 pour le réglage recommandé du système d'exploitation et du niveau d'adaptateur.
Liaison d'adaptateur
La liaison Linux est une fonctionnalité puissante qui peut améliorer considérablement les performances réseau, la redondance et la tolérance aux pannes dans les environnements serveur. Cependant, il est important de noter que son bon fonctionnement nécessite un matériel réseau compatible et une configuration adéquate sur le serveur et le commutateur.
Le pilote de liaison sous Linux permet d'agréger plusieurs interfaces réseau physiques en une interface liée. Cette interface liée apparaît comme une interface réseau virtuelle unique pour le système d'exploitation et les applications.
NOTE
La liaison est une interface logique, il n'est donc pas possible de définir l'affinité du processeur directement sur l'interface de liaison (par exempleample, bond0). Autrement dit, il n'a aucun contrôle direct sur la gestion des interruptions ni sur l'affinité du processeur. L'affinité du processeur doit être configurée pour les interfaces sous-jacentes faisant partie de la liaison.
Le collage offre plusieurs modes de fonctionnement, chacun ayant ses propres caractéristiques.
Mode | Taper |
0 | Tournoi à la ronde |
1 | Sauvegarde active |
2 | XOR |
3 | Diffuser |
4 | PCLA |
5 | Équilibrage de la charge de transmission |
6 | Équilibrage de charge adaptatif |
Il existe différentes méthodes pour créer une liaison sous Linux. L'une des plus courantes consiste à utiliser la configuration réseau. files (par exempleample, /etc/network/interfaces ou /etc/sysconfig/network-scripts/ifcfg-bondX).
Configuration à l'aide de la configuration réseau Files
Les étapes suivantes créent une liaison via la configuration du réseau files.
- Sélectionnez deux ports NIC ou plus pour la liaison (par exempleample, ethX et ethY)
- Ouvrir la configuration de la carte réseau Files sous /etc/sysconfig/network-scripts/ pour l'interface NIC requise (par ex.ample, vi ifcfg-ethX et vi ifcfg-ethY) et ajoutez le texte suivant :
MAÎTRE=bondN [Remarque : N est un entier pour mentionner le numéro de liaison.] ESCLAVE=oui - Créer un script de réseau de liaisons file en utilisant vi /etc/sysconfig/networkscripts/ifcfg-bondN et entrez le texte suivant :
DEVICE=bondN [Remarque : N est un entier pour mentionner le numéro de liaison] ONBOOT=yes USERCTL=no BOOTPROTO=dhcp (ou) none
IPADDR=200.20.2.4 [obligatoire si BOOTPROTO=none] NETMASK=255.255.255.0 [obligatoire si BOOTPROTO=none] NETWORK=200.20.2.0 [obligatoire si BOOTPROTO=none] BROADCAST=200.20.2.255 [obligatoire si BOOTPROTO=none] BONDING_OPTS=”mode=1 miimon=100″
NOTE
Le mode peut être n'importe quel entier compris entre 0 et 6 en fonction des besoins. - Redémarrez les services réseau à l'aide de service network restart ou systemctl restart NetworkManager.service
Dépannage des performances
7.1 Utilisation du processeur
Vérifiez l’utilisation du processeur par cœur pendant l’exécution de la charge de travail.
Notez que l'utilisation par cœur est plus pertinente pour les performances que l'utilisation globale du processeur, car elle donne une idée de l'utilisation du processeur par file d'attente réseau. Si seuls quelques threads gèrent le trafic réseau, seuls quelques cœurs sont peut-être utilisés. En revanche, si ces cœurs sont à 100 %, le débit de votre réseau est probablement limité par l'utilisation du processeur. Il est donc temps d'effectuer les opérations suivantes :
- Réglez la modération IRQ/la taille de l'anneau comme détaillé dans Modération des interruptions.
- Augmentez le nombre de threads applicatifs afin de répartir la charge CPU sur davantage de cœurs. Si tous les cœurs tournent à 100 %, votre application est peut-être dépendante du processeur plutôt que du réseau.
Outils couramment disponibles :
- haut
— Appuyez sur 1 pour développer la liste des processeurs et vérifier ceux qui sont utilisés.
— Notez le niveau d’utilisation.
— Notez quels processus sont répertoriés comme les plus actifs (en haut de la liste). - mpstat
L'exemple suivantampLa ligne de commande a été testée sur Red Hat Enterprise Linux 7.x.
Il affiche l'utilisation du processeur par cœur (en trouvant le pourcentage total d'inactivité et en le soustrayant de 100) et met en évidence les valeurs supérieures à 80 % en rouge. mpstat -P ALL 1 1 | grep -v Average | tail -n +5 | head -n -1 | awk '{ print (100-$13)}' | egrep -color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | column - perf top Recherchez où les cycles sont dépensés.
7.2 Compteurs i40e
Le pilote i40e fournit une longue liste de compteurs pour le débogage et la surveillance de l'interface via la commande ethtool -S ethX. Il peut être utile de surveiller la sortie pendant l'exécution d'une charge de travail et/ou de comparer les valeurs des compteurs avant et après son exécution.
- Pour obtenir un vidage complet des compteurs i40e : ethtool -S ethX
- Pour surveiller uniquement les compteurs non nuls : watch -d (ethtool -S ethX) | egrep -v :\ 0 | column
Quelques éléments à prendre en compte : - rx_dropped signifie que le processeur ne traite pas les tampons assez rapidement.
- port.rx_dropped signifie que quelque chose n'est pas assez rapide dans l'emplacement/la mémoire/le système.
7.3 Compteurs réseau
Vérifiez netstat -s avant/après l'exécution d'une charge de travail.
Netstat collecte les informations réseau de tous les périphériques réseau du système. Par conséquent, les résultats peuvent être impactés par d'autres réseaux que celui testé. Le résultat de netstat -s peut être un bon indicateur de problèmes de performances du système d'exploitation ou du noyau Linux. Consultez les guides de réglage des systèmes d'exploitation, tels que le Guide de réglage des performances réseau de Red Hat Enterprise Linux, pour plus d'informations sur le réglage général des systèmes d'exploitation.
7.4 Journaux système
Vérifiez les journaux système pour les erreurs et les avertissements (/var/log/messages, dmesg).
7.5 Outil Intel svr-info
Intel fournit un outil svr-info (voir https://github.com/intel/svr-info) pour Linux, qui capture les informations matérielles et logicielles pertinentes d'un serveur. La sortie svr-info peut être extrêmement utile pour identifier les goulots d'étranglement du système ou les paramètres/réglages non optimisés pour la charge de travail. Lorsque vous ouvrez une demande d'assistance auprès d'Intel concernant des problèmes de performances liés à Ethernet, veillez à inclure la sortie svr-info (texte). file) pour chaque serveur Linux dans la configuration de test.
- Téléchargez et installez svr-info :
wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
./svr-info
> nom d'hôte.txt - Collecter les résultats :
./svr-info > nom d'hôte.txt - Joindre un texte (.txt) file pour chaque serveur à votre dossier de support Intel pour analyse.
Recommandations pour des scénarios de performance courants
8.1 Transfert IP
- Mettre à jour le noyau.
Certains noyaux récents intégrés à la distribution ont vu leurs performances de routage se dégrader en raison de modifications du code de routage, notamment la suppression du cache de routage pour des raisons de sécurité. Les noyaux récents hors distribution devraient bénéficier de correctifs atténuant l'impact de ces modifications sur les performances et pouvant améliorer les performances. - Désactiver l'hyper-threading (cœurs logiques).
- Modifiez les paramètres de démarrage du noyau.
— Forcer la désactivation d'iommu (intel_iommu=off ou iommu=off) à partir de la ligne de démarrage du noyau, sauf si cela est nécessaire pour la virtualisation
— Désactiver la gestion de l'alimentation : processor.max_cstates=1 idle=poll pcie_aspm=off - Limitez le nombre de files d'attente à un nombre égal au nombre de cœurs sur le socket local (12 dans cet exemple).ample). ethtool -L ethX combiné 12
- Interruptions de broche vers le socket local uniquement. set_irq_affinity -X local ethX OU set_irq_affinity -X local ethX
NOTE
-X ou -x peuvent être utilisés en fonction de la charge de travail. - Modifiez les tailles d'anneaux Tx et Rx selon vos besoins. Une valeur plus élevée consomme davantage de ressources, mais peut offrir de meilleurs débits de transfert. ethtool -G ethX rx 4096 tx 4096
- Désactiver GRO lors du routage.
En raison d'un problème de noyau connu, GRO doit être désactivé lors du routage/transfert. ethtool -K ethX gro off où ethX est l'interface Ethernet à modifier. - Désactivez la modération des interruptions adaptatives et définissez une valeur statique. ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64
NOTE
Selon le type de processeur et la charge de travail, les paramètres de coalescence pour RX et TX peuvent être ajustés pour améliorer les performances (ou réduire la perte de trames).
- Désactiver le pare-feu. sudo systemctl disable firewalld sudo systemctl stop firewalld
- Activer la redirection IP. sysctl -w net.ipv4.ip_forward=1
- Configurez les valeurs maximales pour les tailles de tampon des sockets de réception et d'envoi. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
NOTE
En fonction de la charge de travail ou des besoins, ces valeurs peuvent être modifiées par rapport à la valeur par défaut.
8.2 Faible latence
- Désactivez l'hyper-threading (cœurs logiques).
- Assurez-vous que le périphérique réseau est local sur numa core 0.
- Épinglez le benchmark sur le noyau 0 à l'aide de taskset -c 0.
- Désactivez irqbalance à l'aide de systemctl stop irqbalance ou systemctl disable irqbalance
- Exécutez le script d'affinité pour répartir les données sur plusieurs cœurs. Essayez soit localement, soit sur tous les cœurs.
- Désactiver la modération des interruptions. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
- Limitez le nombre de files d'attente à un nombre égal au nombre de cœurs sur le socket local (32 dans cet exemple)ample). ethtool -L ethX combiné 32
- Interruptions de broche sur le socket local uniquement (script fourni avec la source du pilote i40e). set_irq_affinity -X local ethX
- Utilisez un benchmark établi comme netperf -t TCP_RR, netperf -t UDP_RR ou NetPipe. netperf -t TCP_RR ou netperf -t UDP_RR
- Épinglez le benchmark sur un seul cœur dans le nœud NUMA local. taskset -c
Intel® Ethernet série 700
Guide de réglage des performances Linux
Décembre 2024
Doc. n° : 334019, Rév. : 1.2
Documents / Ressources
![]() |
Optimisation des performances Linux de la série Intel Ethernet 700 [pdf] Guide de l'utilisateur 334019, Optimisation des performances Linux Ethernet série 700, Ethernet série 700, Optimisation des performances Linux, Optimisation des performances, Optimisation |