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

Guia do Lag em Jogos › L7 SO do servidor (kernel)

CPU steal (máquina virtual) CPU steal time

ID da causa so-steal · Responsável principal Infraestrutura de servidores (Equipe de infraestrutura) · Também envolvidos Externo (Externo)

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

Enquanto o servidor físico (hypervisor) cede por um momento o tempo de CPU da máquina virtual a outra máquina virtual (CPU steal), o servidor do jogo fica parado.

Por quê Outra máquina virtual no mesmo host usa muita CPU → Efeito Nossa máquina virtual fica sem rodar por períodos de alguns a dezenas de ms → Na tela Picos inexplicáveis no tempo de tick: engasgos e travamento

Sintomas
Engasgos, Travamento
Fatores
Paralisação
Quem é afetado
Servidor inteiro
Quando
Aleatoriamente, de vez em quando
Responsável
Responsável principal Infraestrutura de servidores (Equipe de infraestrutura) · Também envolvidos Externo (Externo)
O que fazer (Equipe de infraestrutura)
Monitorar a métrica de steal (st no top e no vmstat), usar núcleos ou hosts dedicados, evitar instâncias burstable (que ficam lentas quando os créditos de CPU acabam), parar e iniciar de novo as instâncias com steal alto persistente para movê-las para outro host.
O que fazer (Externo)
Reportar ao provedor de nuvem os hosts com steal alto persistente.
No gráfico
Picos aleatórios · %steal, tempo de tick do servidor
Onde olhar
%steal do mpstat -P ALL 1 no mesmo eixo de tempo do tempo de tick do servidor
Confirma se
O %steal sobe junto nos momentos em que o tick dá pico, e cai depois de parar e iniciar de novo a instância para movê-la para outro host
Descarta se
%steal perto de 0, mas o tick dá picos: causa dentro do servidor do jogo (“Pausa stop-the-world do GC no servidor”, “Contenção de lock”). Em contêiner: “Throttling de CPU em contêiner (cota do CFS)”
Como verificar
Ferramentas de infra (sem precisar do código do jogo)

Fontes

  1. proc_stat(5) — Linux manual page Linux man-pages
    steal: tempo perdido, em ambiente virtualizado, enquanto outros sistemas operacionais rodavam
  2. Standard mode for burstable performance instances AWS
    Instâncias burstable gastam créditos para passar do desempenho de referência; quando os créditos acabam, o uso de CPU cai para o nível de referência
  3. How EC2 instance stop and start works AWS
    Parar e iniciar uma instância quase sempre a move para um novo host
  4. mpstat(1) — Linux manual page sysstat
    %steal: proporção do tempo em que esta CPU virtual teve de esperar enquanto o hypervisor rodava outras CPUs virtuais

Veja também

Mesma camada: L7 SO do servidor (kernel)

Mesmo sintoma (Engasgos) em outras camadas

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