GRO e LRO são recursos que juntam vários pacotes em um só para reduzir a carga na CPU. Dependendo da configuração, um pacote pequeno do jogo pode esperar um pouco pelo próximo pacote para ser agrupado com ele.
Por quê A NIC e o kernel agrupam os pacotes que chegam para processá-los juntos → Efeito Com a agregação por hardware (LRO) ou um tempo de espera de agregação configurado, o pacote espera um pouco pelo próximo → Na tela Leve aumento de latência (em geral, dezenas de µs ou menos)
Responsável principal Infraestrutura de servidores (Equipe de infraestrutura)
O que fazer (Equipe de infraestrutura)
Ajustar para o tráfego do jogo (desligar o LRO, verificar a configuração de tempo de espera da agregação), verificar depois das outras causas, porque o efeito costuma ser pequeno.
No gráfico
Sempre alto desde o início · Tempo de ida e volta dentro do mesmo data center
Onde olhar
Ver o estado de lro e gro com ethtool -k e o valor de gro_flush_timeout na configuração sysfs do dispositivo, e comparar o tempo de ida e volta de pacotes pequenos dentro do data center antes e depois de mudar
Confirma se
O LRO está ligado ou o gro_flush_timeout está acima de 0, e desligar o LRO ou colocar o gro_flush_timeout em 0 reduz o tempo de ida e volta dos pacotes pequenos
Descarta se
A diferença fica dentro de alguns µs depois da mudança: não é esta causa
Como verificar
Ferramentas de infra (sem precisar do código do jogo)
Fontes
NAPILinux kernel Um gro_flush_timeout alto agrupa mais o processamento, mas gera latência quando a carga é baixa