Vous êtes passionnés comme moi de machines basse-consommation, ARM, Atom : rendez visite à mon partenaire !
Linux network performance tuning épisode 2
mardi 08 février 2011 à 07:00 | Performance
Lors du précédent épisode, j'ai présenté comment décharger le processeur, d'une partie de la gestion réseau, avec le TOE ou TCP Offload. Passons à présent aux optimisations du driver réseau Linux, en particulier des paramètres RX et TX.
Le protocole TCP a été élaboré, il y a longtemps. A cette époque, les communications étaient peu fiables, lentes. Cette époque est bien révolue, mais, TCP perdure. Le principe de fonctionnement de TCP, veut que chaque paquet envoyé sur le réseau, soit acquitté par le récepteur.
Principe de fonctionnement du protocole TCP
TCP/IP utilise le principe suivant, une requête est envoyé au serveur :
Le serveur accuse réception du SYN :
Le client acquite réception avec un ACK (en TCPIP ACK pour Acknowledge) :
Quand l'Internet était lent (à l'origine), le serveur envoyait l'ensemble de ses paquets de données, puis, le client acquittait, l'ensemble avec des ACK qui arrivaient tranquillement.
Mais, avec la vitesse actuelle des connexions, les ACK arrivent en rafale à un train d'enfer, le serveur "perd" du temps, a traiter tout les ACK !
Receive Window, Transmit Window
La solution, est d'augmenter la taille des buffers d'entrée et de sortie au niveau du driver réseau. Ces buffers spécifiques, sont connus sous le nom de fenêtres TCP/IP. Le système ne traitera les données reçues que lorsque la fenêtre TCPIP est pleine.
Ethtool va encore nous servir. Avec le flag -g, nous allons connaitre les settings par défaut réglés au niveau du driver, ainsi que la taille maximum des RWIN, Receive Windows et TWIN, Transmit Windows :
ethtool -g eth0
Ring parameters for eth0:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 256
RX Mini: 0
RX Jumbo: 0
TX: 256
Comme l'indique wikipedia, le throughput ou débit du réseau est maximisé par l'augmentation de la Recieve Windows :
Je vais pouvoir définir de façon définitive, l'ensemble des réglages dans le fichier : /etc/modprobe.conf
alias eth0 e1000
options e1000 RxDescriptors=4096,4096 TxDescriptors=4096,4096
Nous avons vu les 2 premiers points. Avant de mettre l'ensemble en oeuvre, je décrirai dans le prochain épisode les optimisations au niveau du noyau Linux.
- optimisation hardware avec le TOE, épisode 1
- optimisation des buffers de carte réseau au niveau driver, cet épisode
- optimisation des buffers systèmes de l'OS au niveau de la pile IP, épisode 3 .
A propos de Vincent RABAH
Je suis DSI depuis 10 ans. Spécialiste en systèmes d'information et réseaux.
Expert en management, GreenIT et virtualisation de serveurs. Vous pouvez consulter l'ensemble de mon parcours.
I do speak English even if my blog is written in French ... Feel free to leave comments, I'll answer you !
- Déploiement en continu, capacity planning
- Google mod_pagespeed, accélérer Apache
- Vitesse d'affichage de site web améliorée épisode 2
- Performance web Node.JS
- Statistiques du blog it-wars.com Juin 2011
- Google Analytics site speed pour le SEO
- Scalabilité Linux et le multicore
- Nginx fastcgi optimisation
- Vitesse d'affichage de site web améliorée
- Linux network performance tuning épisode 1
Vous pouvez lire également :
Partagez cet article :




