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

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.