HPwhitepaper sobre seus adaptadores QLogic (fka Broadcom) NetXtreme II, que inclui a NIC específica que estou testando, afirma (página 7) que o desempenho de pacotes pequenos para pacotes de até 256 bytes/pacote está acima de 5.000.000 pacotes/seg.
Em meus testes com um aplicativo onde desabilitei todo o processamento, exceto a mera parte de recebimento de UDP, posso ir até 120.000 pacotes/s apenas. Os pacotes são distribuídos uniformemente em 12 grupos multicast.
notei que existeum núcleo(de 12 núcleos cada nos 2 soquetes) cuja carga aumenta gradualmente quando eu aumento a taxa de envio UDP eatinge o máximo em cerca de 120.000. Mas não sei o que esse núcleo está fazendo e por quê. Não é um gargalo de thread único em meu aplicativo, porque não importa se eu executo uma única instância do aplicativo para todos os grupos multicast ou 12 instâncias que lidam com 1 grupo multicast cada. Portanto, o gargalo não é meu aplicativo receptor.
MSI está ativado (verificado através doVisualização "recursos por tipo" no gerenciador de dispositivos) e o RSS também está habilitado nas configurações da NIC, com 8 filas. Então, o que está preso a esse núcleo? Todos os recursos de descarregamento da NIC estão ativados, mas desligá-los não ajudou.
Então, onde poderia estar o gargalo?
Detalhes do sistema:
- ProLiant BL460c Gen9
- Intel Xeon E5-2670 v3 (2 x 12 núcleos)
- Placa de rede HP FlexFabric 10 Gb 2 portas 536FLB
- Janelas 2012 R2
Responder1
O RSS também está habilitado nas configurações da NIC, com 8 filas.
O que infelizmente não significava que o RSS estivesse sendo empregado, como
netsh int tcp show global
mostrou:
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : disabled
Depois de executar (aliás, sem reiniciar)
netsh int tcp set global rss=enabled
O RSS começou a funcionar e a carga que anteriormente era acumulada naquele núcleo ruim agora é distribuída uniformemente por muitos núcleos em um dos 2 nós NUMA.
Não verifiquei se isso me permitiria lidar com as cargas de Mpps anunciadas, mas o teto foi elevado o suficiente para avaliar o que eu precisava.