Bei 2008 R2 Enterprise SP1 tritt ein seltsames Leistungsproblem auf.
Hier ist das Setup:
- Viele Prozesse, die unterschiedliche Multicast-UDP-Streams abhören (5 Multicasts hören pro Prozess ab), sind an eine einzelne Netzwerkkarte gebunden
- Prozessübergreifend verwenden alle Multicasts denselben Portbereich, aber unterschiedliche Multicast-IPs (wichtiges Detail, da jeder Multicast-Empfänger für einen bestimmten Port ein Server des REUSED-Server-Sockets ist).
- Jede Prozess-Multicast-Bandbreite beträgt 10 Mbit
- RSS auf NIC eingestellt, maximale Offload-Einstellungen auf NIC & OS eingestellt, MSI aktiviert
Verhalten:
- Bei 17 Abhörprozessen (ca. 85 verbundene UDP-Multicasts) ist die Auswirkung der Kernel-CPU vernachlässigbar.
- Zwischen 17 und 22 Listenern (ca. 110 verbundene UDP-Multicasts) wächst die CPU-Auslastung des Kernels langsam, ist aber akzeptabel
- Ab 25 Jahren hat jeder verbundene Multicast enorme Auswirkungen auf die Kernel-CPU-Zeit. Dies wirkt sich auf alle RSS-gebundenen CPUs aus
- Die pro Abhörprozess verwendete CPU-Zeit liegt nahe 0 (normal, da Prozesse nur das Multicast lesen), sodass das eigentliche Problem in der Betriebssystemkomponente liegt
Was wir gefunden haben:
- Das Ändern der NIC-Hardware hat keine Auswirkungen auf das Verhalten (Getestet auf HP NC382i, Broadcom-basierter NIC und HP NC365T, Quad Gigabit, Intel-basiert).
- Die globale Empfangsbandbreite ist nicht der begrenzende Faktor (ein einzelner 500-Mbit-Stream löst keine CPU-Last aus).
- Das Lesen am Multicast-Socket scheint nicht der einschränkende Faktor zu sein (wir haben den Test mit nur dummen JOIN-Prozessen für die Multicast-Streams und dem Problem der reproduzierten CPU-Auslastung durchgeführt).
- Das Aufteilen von Multicast-Verkehr auf zwei Netzwerkkarten scheint die CPU-Auslastung und -Verbreitung besser zu begrenzen. Dies ist jedoch kein Anwendungsfall für uns.
Problem:
- Wir müssen mindestens 500 Multicast-Streams und vielleicht bis zu 750 hören können
- Dieselbe Hardware unter XP OS weist dieses Verhalten in der CPU-Kernel-Zeit nicht auf
Ausgewählte Komponente:
- NDIS.sys scheint ein guter Kandidat für die Erklärung des Anstiegs der CPU-Auslastung zu sein.
Hat einer von Ihnen auf solche Probleme gestoßen und könnte eine Richtung zur Untersuchung geben. Ich habe alles gelesen, was ich über die Verbesserung der Netzwerkleistung von Win Server 2008 wissen konnte, aber alle scheinen mit dem TCP-Verkehr verbunden zu sein. Ich habe auch alle möglichen Optimierungen getestet, die über die Registrierung oder den Befehl netsh durchgeführt werden können.