Quelqu'un dispose-t-il de données ou de calculs de base permettant de déterminer quand la coalescence des trames (NAPI) est nécessaire et quand une seule interruption par trame est suffisante ?
Mon matériel : IBM BladeServer HS22, matériel Broadcom 5709 Gigabit NIC (MSI-X), avec deux processeurs Xeon E5530 quad-core. L'objectif principal est le serveur proxy Squid. Le commutateur est un beau Cisco 6500 series.
Notre problème de base est qu'aux heures de pointe (trafic de 100 Mbps, seulement 10 000 pps), la latence et la perte de paquets augmentent. J'ai procédé à de nombreux réglages et à la mise à niveau du noyau vers la version 2.6.38, ce qui a permis d'améliorer la perte de paquets, mais la latence reste médiocre. Les pings sont sporadiques ; ils sautent même à 200 ms sur un réseau local Gbps. La réponse moyenne de Squid passe de 30 ms à plus de 500 ms, même si la charge CPU/mémoire est bonne.
Les interruptions montent à environ 15 000/seconde pendant le pic. Ksoftirqd n'utilise pas beaucoup de CPU ; j'ai installé irqbalance pour équilibrer les IRQ (8 chacune pour eth0 et eth1) sur tous les cœurs mais cela n'a pas beaucoup aidé.
Les NIC d'Intel semblent ne jamais avoir ce genre de problèmes, mais étant donné le système de lames et le matériel à configuration fixe, nous sommes en quelque sorte coincés avec les Broadcoms.
Tout indique que la carte réseau est la principale responsable. La meilleure idée que j'ai pour le moment est d'essayer de diminuer les interruptions tout en gardant une latence faible et un débit élevé.
Le bnx2 ne supporte malheureusement pas le rx ou le tx adaptatif.
El NAPI et interruptions adaptatives La réponse au fil de discussion fournit une excellente vue d'ensemble de la modération des interruptions, mais aucune information concrète sur la façon de calculer les paramètres optimaux de coalescence ethtool pour une solution donnée. Existe-t-il une meilleure approche que le simple essai et l'erreur ?
La charge de travail et la configuration matérielle mentionnées ci-dessus ont-elles besoin de la NAPI ? Ou devrait-elle être capable de vivre avec une seule interruption par paquet ?
0 votes
Ce doit être une question difficile... Merci pour la prime, @Holocryptic ! J'ai essayé quelques réglages "ethtool -c" pour le coalescing mais pas de différences notables pour l'instant.
0 votes
Il n'y a pas de problème. Je l'ai juste vu s'attarder pendant quelques jours et il m'a semblé que c'était une bonne question. J'espère que quelqu'un aura quelque chose à vous proposer.
0 votes
Une autre mise à jour... nous sommes passés à des lames IBM HS23 avec des cartes d'interface réseau Emulex 10 Gbps. Cette semaine, nous avons atteint plus de 800 000 paquets/seconde, sans aucune chute. Nous avons dû faire beaucoup de réglages (ParcheandoLinux kernel drivers) pour équilibrer la charge des IRQs mais cela fonctionne fantastiquement maintenant.