Les guerres d'un Responsable Informatique

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
ethertool tcp

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
Je vais traiter dans ce premier article, l'optimisation hardware TCP Offload.

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

Directeur des systemes d'information

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 !


Partagez cet article :



Fil des commentaires de cet article

10 commentaire(s) Commentaires »

  1. 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

  2. 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 ;)

  3. 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!

  4. 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

  5. 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+

  6. 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.

  7. 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...

  8. 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

  9. 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 !

  10. "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 ;)

Laisser un Commentaire

Quelle est la dernière lettre du mot ufrud ? :