Le livre blanc du fournisseur dit: 5Mpps no prob. Je frappe déjà un mur à 120kpps. Où est le goulot d'étranglement?

17

Le livre blanc de HP sur leurs adaptateurs QLogic (fka Broadcom) NetXtreme II , qui inclut la carte réseau spécifique que je teste, déclare (page 7) que les performances de leurs petits paquets pour les paquets jusqu'à 256 octets / paquet sont supérieures à 5 000 000 de paquets / s.

Dans mes tests avec une application où j'ai désactivé tout le traitement, à l'exception de la simple partie de réception UDP, je peux aller jusqu'à 120 000 paquets / sec uniquement. Les paquets sont répartis uniformément sur 12 groupes de multidiffusion.

J'ai remarqué qu'il y a un cœur (sur 12 cœurs chacun sur les 2 sockets) dont la charge augmente progressivement lorsque j'augmente le taux d'envoi UDP et atteint un maximum d'environ 120 000 . Mais je ne sais pas ce que fait ce noyau et pourquoi. Ce n'est pas un goulot d'étranglement à un seul thread dans mon application, car cela n'a pas d'importance si j'exécute une seule instance de l'application pour tous les groupes de multidiffusion, ou 12 instances qui gèrent 1 groupe de multidiffusion chacune. Le goulot d'étranglement n'est donc pas mon application de réception.

MSI est activé (vérifié via la vue "ressources par type" dans le gestionnaire de périphériques ) et RSS est également activé dans les paramètres NIC, avec 8 files d'attente. Alors, qu'est-ce qui s'accroche à ce seul noyau? Toutes les fonctionnalités de déchargement de carte réseau sont actuellement activées, mais leur désactivation n'a pas aidé.

Alors, où pourrait être le goulot d'étranglement?

Détails du système:

  • ProLiant BL460c Gen9
  • Intel Xeon E5-2670 v3 (2 x 12 cœurs)
  • Carte réseau HP FlexFabric 10 Gb 2 ports 536FLB
  • Windows 2012 R2
Eugene Beresovsky
la source
2
Toutes les interruptions rx et tx sont probablement gérées par le même noyau. Je ne connais pas grand-chose aux fenêtres, mais il devrait y avoir une certaine affinité SMP à configurer afin de répartir les IRQ de manière uniforme.
Xavier Lucas

Réponses:

13

RSS est également activé dans les paramètres de la carte réseau, avec 8 files d'attente.

Ce qui, malheureusement, ne signifie pas que RSS est utilisé, comme

netsh int tcp show global

montré:

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : disabled

Après l'exécution (btw sans redémarrage)

netsh int tcp set global rss=enabled

RSS a commencé à fonctionner et la charge qui pesait autrefois sur ce cœur pauvre est désormais répartie uniformément sur plusieurs cœurs sur l'un des 2 nœuds NUMA.

Je n'ai pas vérifié si cela me permettrait de gérer les charges Mpps annoncées, mais le plafond a été suffisamment levé pour comparer ce dont j'avais besoin.

Eugene Beresovsky
la source