Le 2 oct. 07 à 00:05, Romain Tournier a écrit :
je connais mal le noyau linux, mais il me semble, que globalement sous
unix... les operations liés au reseau/firewall... ca ne sort pas du
noyau et que celui-ci a tendance a ne tourner que sur un seul
processeur... donc mieux vaut avoir 1 seul cpu mono-core tres puissant
plutot que pleins de core...
Je connais mal le noyau Linux également mais sous FreeBSD, par
exemple, ce n'est plus vrai depuis la branche 5. Une très grosse
partie du développement depuis 5/6 ans se focalise d'ailleurs sur ce
point très précis (google FreeBSD, SMPng, fine-grained locking,
etc.). Un exemple qui me revient (plus forcément vrai) c'était
d'avoir un thread sur un processeur dédié à servir les interruptions
des interfaces réseau tandis que le reste du traitement se passait
ailleurs. Par contre, il y a d'autres phénomènes (serialization ?)
qui rentrent en jeu, en particulier par rapport à une pile TCP/IP,
qui font que la capacité de traitement n'augmente pas linéairement
avec le nombre de processeurs. Sur les mailing-lists type freebsd-net
ou freebsd-performance, on lit souvent qu'au-delà de deux coeurs pour
du forwarding les bénéfices sont minces. Je ne retrouve pas les
raisonnements à ce sujet.
Avec les moyens derrière Linux, je serai surpris que la situation
soit différente.
ensuite, le bus de la machine (donc entre la/les cartes reseaux, le
cpu
et la ram) a tendance a etre LE facteur bloquant dans l'utilisation de
PC pour des fins d'applicatif réseau sur les pc "moderne"
D'où l'attractivité des processeurs AMD avec la technologie
HyperTransport (surtout pour faire des DMA), ou encore des bus PCI
Express. Si on fait le calcul, c'est intéressant à partir de 1 Gbps
de trafic à travers le routeur (33 MHz * 32 bits pour PCI soit ~1
Gbps pour tout le bus).
Pour prendre encore une fois l'exemple de FreeBSD, il y a un très bon
article décrivant les différents goulots d'étranglement sur un PC
moderne quand on veut "pousser" du paquet à toute vitesse :
http://people.freebsd.org/~andre/Optimizing%20the%20FreeBSD%20IP%20and
%20TCP%20Stack.pdf
Conclusion: PCI Express c'est le pied.
pourquoi ne pas utiliser pf sur son os "natif" ?
Parce que ça ne suit pas vraiment en termes de pps et qu'on est loin
de FreeBSD ou Linux en termes d'adaptation de la pile TCP/IP à du
multi-processeur.
Pour des chiffres, voir : http://www.tancsa.com/blast.html
(potentiellement biaisé, c'est un dev FreeBSD)
Et pour le fait que PF est plus lent qu'IPFW sur FreeBSD, il y a ces
chiffres : http://lists.freebsd.org/pipermail/freebsd-ipfw/2007-March/
002888.html
Mais ça a plus d'un an et je n'en connais pas de plus récents.
Cordialement,
--eberkut
"Don't you know, Kompella, you got to Kompella"
---------------------------
Liste de diffusion du FRnOG
http://www.frnog.org/