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

Guia do Lag em Jogos › L10 Memória

Acesso a memória NUMA remota Remote NUMA access

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

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

Em servidores com duas CPUs, usar a memória ligada à outra CPU deixa o acesso mais lento.

Por quê A thread e a memória ficam em sockets de CPU diferentes → Efeito O acesso à memória fica mais lento (1,5–2 vezes, conforme o hardware) → Na tela Mesma configuração de hardware, mas desempenho diferente em cada processo

Sintomas
Câmera lenta
Fatores
Paralisação
Quem é afetado
Servidor inteiro
Quando
Sempre
Responsável
Responsável principal Infraestrutura de servidores (Equipe de infraestrutura)
O que fazer (Equipe de infraestrutura)
Fixar processo e memória em um socket (numactl), separar os processos do servidor do jogo por socket quando houver dois sockets.
No gráfico
Alto só em alguns · Tempo de tick por processo, memória por nó
Onde olhar
Com numastat -p PID, ver em que nó NUMA está a memória do processo do servidor do jogo e se numa_miss e other_node do numastat estão crescendo; comparar com o nó da CPU em que o processo roda
Confirma se
Só nos processos lentos a maior parte da memória fica em um nó diferente da CPU em que rodam, e a diferença some ao reiniciá-los com CPU e memória fixadas em um só nó via numactl
Descarta se
Lento mesmo com a mesma distribuição de nós dos processos rápidos: outra causa, como noisy neighbor, throttling de CPU ou carga daquele processo
Como verificar
Ferramentas de infra (sem precisar do código do jogo)

Fontes

  1. What is NUMA? Linux kernel
    A memória da mesma célula é mais rápida e tem mais largura de banda; a memória de outra célula (remota) tem acesso mais lento
  2. numactl(8) — Linux manual page numactl
    --cpunodebind e --membind fixam a CPU e a memória do processo em um nó NUMA específico
  3. numastat(8) — Linux manual page numactl
    Contadores numa_miss (alocação fora do nó desejado) e other_node (alocação neste nó por um processo rodando em outro nó); -p mostra a memória do processo por nó

Veja também

Mesma camada: L10 Memória

Mesmo sintoma (Câmera lenta) em outras camadas

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