Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

8.2. Paramètres réseau optimisés

L'optimisation des performances est habituellement effectuée de manière préventive. Le plus souvent, nous ajustons les variables connues avant d'exécuter une application ou de déployer un système. Si le réglage se révèle inefficace, nous tentons d'ajuster d'autres variables. La logique derrière ce raisonnement est que par défaut, le système n'opère pas à son niveau de performance optimale. Ainsi, nous pensons devoir régler le système en conséquence. Dans certains cas, nous le faisons en calculant les risques.
Comme mentionné plus tôt, la pile réseau s'optimise principalement elle-même. En outre, l'optimisation du réseau requiert une complète compréhension non-seulement de la manière dont la pile réseau fonctionne, mais aussi des conditions spécifiques requises des ressources réseau du système spécifique. Une configuration incorrecte des performances peut mener à une performance dégradée.
Par exemple, prenez en considération le problème bufferfloat. Augmenter les profondeurs des files d'attente de la mémoire-tampon se traduit par des connexions ayant des fenêtres de congestion plus grandes que le lien aurait normalement autorisé (dû à la mémoire-tampon profonde). Cependant, ces connexions ont aussi d'énormes valeurs RTT puisque les trames passent tant de temps en file d'attente. Ceci provoquera en retour une sortie sous-optimale car il sera impossible de détecter la congestion.
Lorsqu'il s'agit des performances réseau, il est recommandé de conserver les paramètres par défaut, à moins qu'un problème de performance particulier ne devienne apparent. De tels problèmes incluent les pertes de trames, un débit réduit de manière significative, et ainsi de suite. Même ainsi, la meilleure solution sera souvent celle résultant d'une étude méticuleuse du problème, plutôt que de simplement augmenter les paramètres de réglage (augmenter les longueurs des files d'attente et de la mémoire-tampon, réduire la latence des interruptions, etc).
Pour correctement diagnostiquer un problème de performance, veuillez utiliser les outils suivants :
netstat
Utilitaire sur la ligne de commande qui imprime des connexions réseau, tables de routage, statistiques d'interface, connexions fictives et adhésions à des multidiffusions. Il récupère des informations sur le sous-système « networking » à partir du système de fichiers /proc/net/. Ces fichiers incluent :
  • /proc/net/dev (informations sur le périphérique)
  • /proc/net/tcp (informations sur le socket TCP)
  • /proc/net/unix (informations sur le socket du domaine Unix)
Pour obtenir des informations supplémentaires sur netstat et ses fichiers référencés depuis /proc/net/, veuillez consulter la page man netstat : man netstat.
dropwatch
Utilitaire de surveillance qui suit les paquets laissés par le noyau. Pour obtenir davantage d'informations, veuillez consulter la page man dropwatch : man dropwatch.
ip
Utilitaire pour gérer et surveiller les itinéraires, les périphériques, les routages basés sur stratégie et les tunnels. Pour obtenir davantage d'informations, veuillez consulter la page man ip : man ip.
ethtool
Utilitaire pour afficher et modifier les paramètres de NIC. Pour obtenir davantage d'informations, veuillez consulter la page man ethtool : man ethtool.
/proc/net/snmp
Fichier affichant des données ASCII nécessaires pour les bases d'informations de gestion IP, ICMP, TCP et UDP pour un agent snmp. Il affiche aussi des statistiques UDP allégées en temps réel.
Le Guide du débutant SystemTap contient plusieurs exemples de script que vous pouvez utiliser pour profiler et surveiller les performances réseau. Ce guide est disponible sur http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/.
Après avoir collecté les données pertinentes à un problème de performances réseau, vous devriez être en mesure de formuler une théorie, et probablement une solution.[5] Par exemple, une augmentation des erreurs d'entrées UDP dans /proc/net/snmp indique qu'une ou plusieurs des files de réception des sockets sont pleines lorsque la pile réseau tente de mettre des nouvelles trames dans la file d'attente d'un socket d'application.
Ceci indique que les paquets sont congestionnés sur au moins une file d'attente de socket, ce qui signifie que soit la file vide les paquets trop lentement, soir le volume de paquets est trop important pour cette file. S'il s'agit de la seconde possibilité, alors veuillez rechercher des données perdues dans les journaux de toute application utilisant le réseau de manière intensive. Pour résoudre ceci, vous devrez optimiser ou reconfigurer l'application fautive.

Taille du tampon de réception du socket

Les tailles des sockets d'envoi et de réception sont ajustées dynamiquement. Ainsi, elles doivent rarement être modifiées manuellement. Si des analyses supplémentaires, comme celle présentée dans l'exemple du réseau SystemTap, sk_stream_wait_memory.stp, suggèrent que le taux de vidage de la file du socket est trop lent, alors vous pouvez augmenter la profondeur de la file du socket de l'application. Pour ce faire, augmentez la taille des tampons utilisés par les sockets en configurant l'une des valeurs suivantes :
rmem_default
Paramètre du noyau qui contrôle la taille par défaut des tampons de réception utilisés par les sockets. Pour le configurer, veuillez exécuter la commande suivante :
sysctl -w net.core.rmem_default=N
Remplacez N par la taille de tampon souhaitée, en octets. Pour déterminer la valeur de ce paramètre du noyau, affichez /proc/sys/net/core/rmem_default. N'oubliez pas que la valeur de rmem_default ne doit pas être supérieure à rmem_max (/proc/sys/net/core/rmem_max) ; si besoin est, augmentez la valeur de rmem_max.
SO_RCVBUF
Option de socket contrôlant la taille maximale d'un tampon de réception d'un socket, en octets. Pour obtenir davantage d'informations sur SO_RCVBUF, veuillez consulter la page man : man 7 socket.
Pour configurer SO_RCVBUF, veuillez utiliser l'utilitaire setsockopt. Vous pouvez récupérer la valeur SO_RCVBUF actuelle avec getsockopt. Pour obtenir davantage d'informations sur l'utilisation de ces deyx utilitaires, veuillez consulter la page man setsockopt : man setsockopt.


[5] La Section 8.3, « Aperçu des réceptions de paquets » contient un aperçu du voyage du paquet, ce qui devrait vous aider à trouver et mapper les zones prônes à une certaine congestion dans la pile réseau.