2012/11/28 [WHD-RS] Benjamin SCHILZ benjamin@whd-rs.com:
Bonjour à tous,
Je m’interroge sur la distribution des I/O réseaux sur un serveur Linux (Debian 6.0.6 ; 2.6.32-5-amd64) :
Les I/O sont toutes envoyées sur un cœur. Le truc que j’arrive pas à saisir c’est que sur d’autres serveurs avec la même version de noyau, driver réseau (e1000e) et le même genre de cartes réseaux (Intel sur CM Supermicro) ce n’est pas le cas :
#cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 53: 2136695 2136042 2138009 2137537 PCI-MSI-edge eth0 54: 42655676 42656495 42654333 42654706 PCI-MSI-edge eth1
Bonjour,
C'est lié au nombre de coeurs et à l'architecture physique de la carte mère. J'ai constaté qu'au delà de 4 coeurs, les interruptions sont wirées sur un coeur et plus distribuées (pour les fans, lire ce qui concerne l'io-apic dans le noyau).
irqbalance est à oublier, vu qu'il cherche l'économie d'énergie et pas la performance apparemment. Enfin, il ne fonctionne tout simplement pas quand on renomme les cartes (si ça ne commence pas par eth il est perdu). Perso j'ai fait des scripts dans le ifup.d qui redistribue les IRQs réseau en round-robin sur tous mes coeurs (je les matche avec une regex).
Il peut y avoir un intérêt à mettre plus de cartes en LACP par exemple, même si pas beaucoup de débit, pour utiliser tous les coeurs (je pense à un LB en DSR par exemple); et à des cartes genre intel ou broadcom qui ont 8 files txrx avec chacune une interruption.
Cordialement,