Il white paper di HP sugli adattatori QLogic (fka Broadcom) NetXtreme II , che include la scheda NIC specifica che sto testando, afferma (pagina 7) che le prestazioni dei pacchetti piccoli per pacchetti fino a 256 byte / pacchetto sono superiori a 5.000.000 di pacchetti / sec.
Nei miei test con un'app in cui ho disabilitato tutta l'elaborazione tranne la semplice parte di ricezione UDP, posso arrivare solo a 120.000 pacchetti / sec. I pacchetti sono distribuiti uniformemente su 12 gruppi multicast.
Ho notato che esiste un core (su 12 core ciascuno sui 2 socket) il cui carico aumenta gradualmente quando accendo la velocità di invio UDP e raggiunge il massimo a circa 120.000 . Ma non so cosa stia facendo quel core e perché. Non è un collo di bottiglia a thread singolo nella mia app, perché non importa se eseguo una singola istanza dell'app per tutti i gruppi multicast o 12 istanze che gestiscono 1 gruppo multicast ciascuno. Quindi il collo di bottiglia non è la mia app per ricevitore.
L'MSI è abilitato (verificato tramite la vista "risorse per tipo" in Gestione dispositivi ) e anche l'RSS è abilitato nelle impostazioni NIC, con 8 code. Quindi, cosa si aggrappa a quell'unico core? Tutte le funzionalità di offload della NIC sono attualmente attive, ma disattivarle non ha aiutato.
Quindi dove potrebbe essere il collo di bottiglia?
Dettagli del sistema:
- ProLiant BL460c Gen9
- Intel Xeon E5-2670 v3 (2 x 12cores)
- NIC HP FlexFabric 10Gb a 2 porte 536FLB
- Windows 2012 R2