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

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

Atraso pela espera de agregação GRO/LRO GRO/LRO batching

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

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

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)

Sintomas
Input lag
Fatores
Latência
Quem é afetado
Servidor inteiro
Quando
Sempre
Responsável
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

  1. NAPI Linux kernel
    Um gro_flush_timeout alto agrupa mais o processamento, mas gera latência quando a carga é baixa
  2. Linux Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Adapters (ixgbe) Linux kernel
    O GRO economiza CPU juntando o tráfego recebido em blocos grandes; é uma evolução do LRO
  3. ethtool(8) — Linux manual page ethtool
    Configurações gro e lro on|off do ethtool -K

Veja também

Mesma camada: L6 Placa de rede do servidor

Mesmo sintoma (Input lag) em outras camadas

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