Si el búfer circular, donde la NIC guarda los paquetes un momento, es pequeño, se desborda cuando llegan muchos de golpe y los paquetes se descartan.
Por qué El búfer circular se deja en su valor por defecto, que es pequeño (256–2,048 slots según el driver) → Efecto En una ráfaga, el búfer se desborda antes de que la CPU saque los paquetes → En pantalla Pérdida solo en los momentos de ráfaga (teletransporte, habilidades que no salen). Sin rastro en los logs del servidor del juego
Responsable principal Infraestructura de servidores (Equipo de infraestructura)
Tareas (Equipo de infraestructura)
Ampliar el búfer circular (ethtool -G), vigilar los contadores de descartes (drop), como rx_missed_errors en ethtool -S (los nombres cambian según el driver).
Cifras de referencia
Si llega 1 millón de paquetes por segundo, 1,024 slots se llenan en aproximadamente 1 ms. Basta con que la CPU llegue tarde una sola vez en ese intervalo para que se desborde. La mayoría de las NIC permiten ampliarlo a varios miles.
En el gráfico
Picos aleatorios · Contadores de descartes de recepción de la NIC
Dónde mirar
Recoger a intervalos cortos los contadores de descartes de recepción de ethtool -S (rx_missed_errors, rx_fifo_errors, etc.; los nombres cambian según el driver) y el missed de ip -s -s link, y ver con ethtool -g el tamaño actual y el máximo del búfer circular
Se confirma si
Los contadores de descartes suben en los momentos de ráfaga y el tamaño actual del búfer está muy por debajo del máximo. Al ampliarlo, los descartes bajan
Se descarta si
Si los contadores de descartes no se mueven y aun así hay pérdida, apunta a la siguiente etapa del kernel (“Búferes de socket del kernel insuficientes”) o a la red. Si el %soft de un núcleo está al 100%, a “Interrupciones de la NIC concentradas en un solo núcleo”
Se verifica con
Con herramientas de infraestructura (no hace falta código del juego)
Interface statisticsLinux kernel Los paquetes que el dispositivo descarta por falta de búfer se cuentan en rx_missed_errors; las estadísticas de cada driver se ven con ethtool -S
ethtool(8) — Linux manual pageethtool -g muestra el tamaño del búfer circular (actual y máximo), -G lo cambia, -S muestra las estadísticas del driver