Vous êtes passionnés comme moi de machines basse-consommation, ARM, Atom : rendez visite à mon partenaire !
Linux network performance tuning épisode 1
mardi 01 février 2011 à 13:00 | Performance
ARTICLE PÉRIMÉ
Ce premier épisode, va me permettre de balayer les optimisations rendues possible par le TCP Offload Engine (TOE). Cette fonctionnalité décharge le processeur d'une partie des taches déportées, au niveau du hardware de la carte réseau éthernet. Le traitement déporté de TCP.
Suite à la conversation constructive avec Philippe Petrinko (voir les commentaires plus bas), le TOE NE SERT A RIEN !!!
Les optimisations réseaux
Les OS permettent d'optimiser et de maximiser les flux réseaux, en agissant à 3 niveaux (chacun donnera lieu à un article et un article final, présentera à mise en oeuvre et mesures avec iperf) :
- optimisation hardware avec le TOE
- optimisation des buffers de carte réseau au niveau driver
- optimisation des buffers systèmes de l'OS au niveau de la pile IP
TCP Offload Engine
A l'origine TCP a été conçu pour des réseaux non fiables à faible vitesse (modems dial-up), la vitesse d'Internet a depuis augmenté.
Les stacks TCP des OS exigent une puissance de calcul importante : une carte Full duplex TCP Gigabit consomme plus de 80% d'un 2,4 GHz Pentium 4.
L'idée est donc de décharger le processeur, des traitements TCP, au profit d'un chipset dédié sur la carte réseau. Depuis plusieurs années, beaucoup de cartes réseaux supportent cette fonctionnalité (à divers degrés), connue sous le nom de TOE (TCP Offload Engine).
Mise en oeuvre de ethtool
Première étape: installer l'outil ethtool, sur Debian :
aptitude install ethtool
Pour connaitre, les options déjà activées, je vais utiliser la commande ethtool sur une carte Intel Pro 1000 Dual NIC :
sudo ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: off
large-receive-offload: off
ntuple-filters: off
receive-hashing: off
Ces différentes valeurs peuvent être modifiées, avec la commande ethtool, pour optimiser les réglages du TCP Offload Engine, de multiples manières :
sudo ethtool --offload eth0 rx off tx off sg off tso off
ou
sudo ethtool -K eth0 tx on
sudo ethtool -K eth0 rx on
sudo ethtool -K eth0 sg on
sudo ethtool -K eth0 tso on
sudo ethtool -K eth0 ufo on
sudo ethtool -K eth0 gso on
sudo ethtool -K eth0 gro on
sudo ethtool -K eth0 lro on
sudo ethtool -K eth0 rh on
Les constructeurs proposent une description avancée, des différentes fonctions TOE supportées par leurs cartes. Il convient également, d'essayer chaque réglage individuellement, pour ne pas risquer de perdre la connexion (surtout dans le cas de serveurs distants). En outre, certains ont rencontré des problèmes sur des options, avec des machines virtuelles VMware !
Les différentes commandes ne sont pas persistantes, vous pouvez les ajouter dans /etc/rc.local pour les activer au prochain reboot.
Pour plus d'informations, vous pouvez consulter cet article TOE sur Wikipedia
.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 !
- Vitesse d'affichage de site web améliorée épisode 2
- Scalabilité Linux et le multicore
- Nginx fastcgi optimisation
- Statistiques du blog it-wars.com Juin 2011
- ArchLinux ARM et Seagate DockStar avec le kernel Linux 3.0
- Vitesse d'affichage de site web améliorée
- Linux network performance tuning épisode 2
- Performance web Node.JS
- NodeJS-News
- Analyser les logs Nginx avec GoAccess
Vous pouvez lire également :
Partagez cet article :





Bonjour Vincent,
Félicitations pour l'outil de recherche intégré, ça marche.
Et cependant, il n'indexe pas tout le contenu du site, notamment pas les commentaires, n'est-ce pas?
> Comme, j'aime également l'efficience et l'efficacité, Philippe, tu as raison !
> Je n'avais pas lu toutes ces infos ... Snifff :(
Justement.
Maintenant que tu les as lues, quand vas-tu rectifier l'article pour en tenir compte?
En effet, l'article ne représente plus ce que tu sais et ce que tu penses de la technologie TOE.
Je sais, c'est dur, mais à la différence d'un livre, un site vaut par sa capacité à intégrer les informations _et_ leur évolution, donc par modification de l'article initial, pour refléter ces principes du travail commun (tu écris et nous lisons et commentons) : à plusieurs, nous voyons plus de choses, à plusieurs nous sommes plus forts...
L'article doit soit être marqué "ARCHIVE périmée" ou bien être fortement amendé, pour refléter tout ce que tu nous avons appris ensemble, car sans toi, je ne saurais pas cela, et réciproquement.
@+PP
Comme, j'aime également l'efficience et l'efficacité, Philippe, tu as raison !
Je n'avais pas lu toutes ces infos ... Snifff :(
Je fais un peu plus de 35h, en cumulant avec mes PCs à la maison et mon lab VMware. Je te promets d'implémenté une recherche dès ce soir.
KISS ;)
Ah, je n'ai pas trouvé d'article sur VirtualBox,
du Xen et Vmware oui.
Petite demande d'amélioration pour le site Web: un outil de recherche. Pas trouvé sauf erreur.
Merci!
Merci pour ta réponse Vincent.
Hélas, je n'ai que 35 heures dans ma journée ;-)
et je dois me consacrer à améliorer efficience et efficacité.
J'ai apprécié d'avoir un éclairage sur la technique,
me poser la question de la pertinence,
au moins pour savoir le fond du problème.
Je souhaiterais rester humble,
je dirai que je fais confiance aux experts Linux du noyau,
je suis d'accord avec tous les _14_ arguments contre le TOA,
http://www.linuxfoundation.org/collaborate/workgroups/networking/toe
et en fonction du principe de parcimonie, (KISS Principle, n'est-ce pas)
je consacrerai le temps limité de mon cerveau très limité
à bosser sur une optimisation qui a de l'avenir.
J'adore le travail de recherche appliquée,
mais pas celle qui va dans le mur, selon les experts,
tant que le cadre du TOE n'est pas un cadre "Standard Internet"
et même encore, la plupart des arguments des ingéLinux
sont valables, notamment les arguments 8 et 14
http://www.linuxfoundation.org/collaborate/workgroups/networking/toe#Linux_features
http://www.linuxfoundation.org/collaborate/workgroups/networking/toe#Eliminates_global_system_view ).
Tiens, je préfère bosser sur VirtualBox, et lire tes articles sur la virtualisation.
Puisque tu as lu la même chose que moi,
puis-je savoir si tu vas enrichir ton article
en te faisant l'écho des commentaires Viadeo et du point de vue des LinuxKernel Developpers/LinuxFoundation?
--P
Bonjour Philippe, j'ai lu les mêmes informations, j'ai d'ailleurs eu pas mal de remarques à ce sujet sur les hubs Viadeo où j'ai posté l'information ! Néanmoins, ça existe, il faut en parler et comme j'aime bien essayer, je vais faire mes propres tests, pour voir si j'arrive au même point ? :)
A+
Et apparemment, les ingénieur du noyau linux et TCP préfèrent la voie logicielle du noyau pour gérer la congestion.
La méthode actuelle sous Linux http://en.wikipedia.org/wiki/CUBIC_TCP
Sur les MS récents (Vista et S2008), c'est http://en.wikipedia.org/wiki/Compound_TCP
(vue générale: http://en.wikipedia.org/wiki/TCP_congestion_avoidance_algorithm )
Donc, adieu TOE ... ?
Pour ma part, oui.
AhAh.
Je viens de lire la page Wikipedia sur le TOE.
Le chapitre "Support in Linux" est négatif.
http://en.wikipedia.org/wiki/TCP_Offload_Engine#Support_in_Linux
Et je lis ensuite la référence de La LinuxFoundation:
http://www.linuxfoundation.org/collaborate/workgroups/networking/toe
Qui enterre quasiment le TOE par sa critique!
Ouch...
Bonjour Vincent,
Article qui m'intéresse, toujours bon d'en savoir plus.
L'article d'ailleurs met en appétit, le lecteur a envie d'en savoir plus.
Sans attendre les bancs d'essais (merci à tous d'éviter les anglicismes lorsque le terme français existe), dans cet article peux-tu nous donner le résultat de la commande [ethtool -k eth0] après avoir appliqué les réglages conseillés?
Pour information, la carte réseau sur laquelle je viens de tester ne digère pas toutes les réglages, mais cela m'intéresse. Grâce à ethtool j'avais réussi à la faire fonctionner en FULL-DUPLEX, alors que l'auto-negociation n'y parvenait pas.
Merci et continue tes articles.
-- Philippe
Bonjour,
Je compte faire un récapitulatif des performances ainsi obtenues, dans l'article final (j'en ai prévu 3), ou peut-être dans un quatrième ? Donc, il devrait y avoir des benchmarks !
A bientôt !
"balayer les optimisations rendues"
Ok. Intéressant. Mais j'espère que la suite ne sera pas comme pas mal d'autres articles de ce type qui donnent simplement des modifs de réglages potentiels mais qui NE DONNENT PAS d'élements tangibles mesurables pour indiquer les gains effectifs.
Ce genre de démarche n'a de sens (pour celui qui lit) que si l'on peut mesurer la différence avant/après ...
Vivement la suite ;)