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
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)
Interface statisticsLinux 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
ethtool(8) — Linux manual pageethtool -g mostra o tamanho do ring (atual e máximo), -G altera, -S mostra as estatísticas por driver