HPdocumento técnico sobre sus adaptadores QLogic (antes Broadcom) NetXtreme II, que incluye la NIC específica que estoy probando, indica (página 7) que su rendimiento de paquetes pequeños para paquetes de hasta 256 bytes/paquete está por encima de 5.000.000 paquetes/seg.
En mis pruebas con una aplicación en la que deshabilité todo el procesamiento excepto la parte de recepción UDP, solo puedo alcanzar 120.000 paquetes/seg. Los paquetes se distribuyen uniformemente en 12 grupos de multidifusión.
Noté que hayun núcleo(de 12 núcleos cada uno en los 2 sockets) cuya carga aumenta gradualmente cuando aumento la velocidad de envío UDP yalcanza un máximo de alrededor de 120.000. Pero no sé qué está haciendo ese núcleo y por qué. No es un cuello de botella de un solo subproceso en mi aplicación, porque no importa si ejecuto una sola instancia de la aplicación para todos los grupos de multidifusión o 12 instancias que manejan 1 grupo de multidifusión cada una. Entonces el cuello de botella no es mi aplicación receptora.
MSI está habilitado (verificado a través delVista "recursos por tipo" en el administrador de dispositivos) y RSS también está habilitado en la configuración de NIC, con 8 colas. Entonces, ¿qué se aferra a ese núcleo? Todas las funciones de descarga de NIC están activadas actualmente, pero desactivarlas no ayudó.
Entonces, ¿dónde podría estar el cuello de botella?
Detalles del sistema:
- ProLiant BL460c Gen9
- Intel Xeon E5-2670 v3 (2 x 12 núcleos)
- NIC HP FlexFabric de 10 Gb y 2 puertos 536FLB
- Ventanas 2012 R2
Respuesta1
RSS también está habilitado en la configuración de NIC, con 8 colas.
Lo que lamentablemente no significa que se estuviera empleando RSS, ya que
netsh int tcp show global
presentado:
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : disabled
Después de ejecutar (por cierto, sin reiniciar)
netsh int tcp set global rss=enabled
RSS comenzó a funcionar y la carga que antes se acumulaba en ese núcleo pobre ahora se distribuye uniformemente entre muchos núcleos en uno de los 2 nodos NUMA.
No he verificado si eso me permitiría manejar las cargas de Mpps anunciadas, pero el techo se elevó lo suficiente como para comparar lo que necesitaba.