한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Libro blanco del lag en juegos › L6 Tarjeta de red del servidor

Búfer circular (ring buffer) insuficiente RX ring buffer overflow

ID de la causa nic-ring · Responsable principal Infraestructura de servidores (Equipo de infraestructura)

Abrir la ficha interactiva con gráficos y simulaciones →

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

Síntomas
Teletransporte, Acción perdida / rollback
Factores
Pérdida de paquetes
A quién afecta
Todo el servidor
Cuándo
Cuando se junta mucha gente
Responsable
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)

Fuentes

  1. Linux Base Driver for Intel(R) Ethernet Network Connection (e1000) Linux kernel
    Descriptores de recepción (slots del búfer circular) de e1000: 256 por defecto, ampliables hasta 4,096
  2. drivers/net/ethernet/intel/ice/ice.h (Linux v6.12) Linux kernel
    Descriptores de recepción del driver ice: 2,048 por defecto, máximo 8,160
  3. Interface statistics Linux 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
  4. ethtool(8) — Linux manual page ethtool
    -g muestra el tamaño del búfer circular (actual y máximo), -G lo cambia, -S muestra las estadísticas del driver

Ver también

Misma capa: L6 Tarjeta de red del servidor

Causas de otras capas con el mismo síntoma (Teletransporte)

Ver la ficha interactiva con gráficos y simulaciones