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

Guia do Lag em Jogos › L6 Placa de rede do servidor

Ring buffer insuficiente RX ring buffer overflow

ID da causa nic-ring · Responsável principal Infraestrutura de servidores (Equipe de infraestrutura)

Abrir o card interativo, com figuras e simulações →

Se o ring buffer, onde a NIC guarda os pacotes por um instante, é pequeno, um pico repentino faz o buffer transbordar e os pacotes são descartados.

Por quê O ring buffer fica no valor padrão, que é pequeno (256–2.048 slots, conforme o driver) → Efeito Durante um burst, o buffer transborda antes de a CPU tirar os pacotes → Na tela Perda só nos momentos de burst (teleporte, skills que não saem). Nenhum rastro nos logs do servidor do jogo

Sintomas
Teleporte, Ação perdida / rollback
Fatores
Perda de pacotes
Quem é afetado
Servidor inteiro
Quando
Quando junta muita gente
Responsável
Responsável principal Infraestrutura de servidores (Equipe de infraestrutura)
O que fazer (Equipe de infraestrutura)
Aumentar o ring buffer (ethtool -G), monitorar os contadores de descarte (como rx_missed_errors no ethtool -S; os nomes variam conforme o driver).
Números de referência
Com 1 milhão de pacotes por segundo, 1.024 slots enchem em cerca de 1 ms. Se a CPU atrasar uma única vez nesse intervalo, o buffer transborda. A maioria das NICs permite aumentar para alguns milhares de slots.
No gráfico
Picos aleatórios · Contadores de descarte de recepção da NIC
Onde olhar
Coletar em intervalos curtos os contadores de descarte de recepção do ethtool -S (rx_missed_errors, rx_fifo_errors etc.; os nomes variam conforme o driver) e o missed do ip -s -s link, e ver com ethtool -g o tamanho atual e o máximo do ring
Confirma se
Os contadores de descarte sobem nos momentos de burst, e o tamanho atual do ring está bem abaixo do máximo. Aumentar o ring reduz os descartes
Descarta se
Contadores de descarte parados, mas com perda: próxima etapa no kernel (“Buffer de socket do kernel insuficiente”) ou trecho de rede. Um núcleo com %soft em 100%: “Interrupções da NIC concentradas em um só núcleo”
Como verificar
Ferramentas de infra (sem precisar do código do jogo)

Fontes

  1. Linux Base Driver for Intel(R) Ethernet Network Connection (e1000) Linux kernel
    Descritores de recepção (slots do ring) do e1000 com padrão de 256, podendo chegar a 4.096
  2. drivers/net/ethernet/intel/ice/ice.h (Linux v6.12) Linux kernel
    Descritores de recepção do driver ice com padrão de 2.048 e máximo de 8.160
  3. Interface statistics Linux kernel
    Pacotes descartados pelo dispositivo por falta de buffer entram em rx_missed_errors; as estatísticas por driver são vistas com ethtool -S
  4. ethtool(8) — Linux manual page ethtool
    -g mostra o tamanho do ring (atual e máximo), -G altera, -S mostra as estatísticas por driver

Veja também

Mesma camada: L6 Placa de rede do servidor

Mesmo sintoma (Teleporte) em outras camadas

Ver o card interativo, com figuras e simulações