HPsWhitepaper zu ihren QLogic (ehemals Broadcom) NetXtreme II-Adaptern, zu dem auch die von mir getestete Netzwerkkarte gehört, gibt an (Seite 7), dass die Leistung kleiner Pakete bis zu 256 Byte/Paket über 5.000.000 Pakete/Sek. liegt.
Bei meinen Tests mit einer App, bei der ich die gesamte Verarbeitung außer dem reinen UDP-Empfangsteil deaktiviert habe, komme ich nur auf 120.000 Pakete/Sek. Die Pakete sind gleichmäßig auf 12 Multicast-Gruppen verteilt.
Mir ist aufgefallen, dass esein Kern(von jeweils 12 Kernen auf den 2 Sockeln), deren Last allmählich zunimmt, wenn ich die UDP-Sendegeschwindigkeit erhöhe undliegt bei ca. 120.000. Aber ich weiß nicht, was dieser Kern macht und warum. Es ist kein Single-Thread-Engpass in meiner App, denn es spielt keine Rolle, ob ich eine einzelne Instanz der App für alle Multicast-Gruppen ausführe oder 12 Instanzen, die jeweils 1 Multicast-Gruppe verarbeiten. Der Engpass ist also nicht meine Empfänger-App.
MSI ist aktiviert (überprüft durch dieAnsicht „Ressourcen nach Typ“ im Gerätemanager) und RSS ist auch in den NIC-Einstellungen aktiviert, mit 8 Warteschlangen. Was hängt also an diesem einen Kern? Alle NIC-Offloading-Funktionen sind derzeit aktiviert, aber das Ausschalten hat nicht geholfen.
Wo also könnte der Engpass sein?
Systemdetails:
- ProLiant BL460c Gen9
- Intel Xeon E5-2670 v3 (2 x 12 Kerne)
- HP FlexFabric 10 Gb 2-Port 536FLB NIC
- Windows 2012 R2
Antwort1
Auch RSS ist in den NIC-Einstellungen mit 8 Warteschlangen aktiviert.
Was leider nicht bedeutete, dass RSS eingesetzt wurde, denn
netsh int tcp show global
zeigte:
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : disabled
Nach dem Ausführen (übrigens ohne Neustart)
netsh int tcp set global rss=enabled
RSS funktioniert jetzt und die Last, die früher auf diesem einen schlechten Kern lastete, wird jetzt gleichmäßig auf viele Kerne auf einem der beiden NUMA-Knoten verteilt.
Ich habe nicht überprüft, ob ich damit die angekündigten Mpps-Lasten bewältigen könnte, aber die Obergrenze war ausreichend hoch, um den erforderlichen Maßstab zu setzen.