¿Alguien tiene algunos datos o cálculos básicos que puedan responder cuando se requiere la fusión de cuadros (NAPI) y cuando una sola interrupción por cuadro es suficiente?
Mi hardware: IBM BladeServer HS22, hardware Broadcom 5709 Gigabit NIC (MSI-X), con procesadores duales Xeon E5530 de cuatro núcleos. El propósito principal es el servidor proxy Squid. Switch es una buena serie Cisco 6500.
Nuestro problema básico es que durante las horas pico (tráfico de 100 Mbps, solo 10,000 pps) aumenta la latencia y la pérdida de paquetes. He realizado muchos ajustes y actualizaciones del kernel a 2.6.38 y ha mejorado la pérdida de paquetes, pero la latencia sigue siendo pobre. Los pings son esporádicos; saltando incluso a 200 ms en LAN local de Gbps. La respuesta promedio de calamar salta de 30ms a 500 + ms aunque la carga de CPU / memoria está bien
Las interrupciones suben a aproximadamente 15,000 / segundo durante el pico. Ksoftirqd no usa mucha CPU; He instalado irqbalance para equilibrar los IRQ (8 cada uno para eth0 y eth1) en todos los núcleos, pero eso no ha ayudado mucho.
Las NIC de Intel parecen nunca tener este tipo de problemas, pero debido al hecho de que el sistema de blades y el hardware de configuración fija, estamos atascados con los Broadcom.
Todo apunta a la NIC como el principal culpable. La mejor idea que tengo ahora es intentar disminuir las interrupciones mientras se mantiene baja la latencia y el rendimiento alto.
Lamentablemente, el bnx2 no admite adaptativo-rx o tx.
La respuesta de subproceso NAPI frente a interrupciones adaptativas proporciona una excelente visión general de la moderación de interrupciones, pero no proporciona información concreta sobre cómo calcular la configuración óptima de fusión de herramientas de ettool para una solución alternativa dada. ¿Existe un mejor enfoque que solo prueba y error?
¿La carga de trabajo y la configuración de hardware mencionadas anteriormente incluso necesitan NAPI? ¿O debería poder vivir con una sola interrupción por paquete?