Sobrecarga de zona em thread única (hotspot) Single-threaded hot zone
ID da causa sp-hotzone · Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Infraestrutura de servidores (Equipe de infraestrutura)
Numa arquitetura em que cada área fica com uma thread, quando todo mundo se junta num lugar, só aquele núcleo vai a 100%.
Por quê Uma única thread cuida de uma área (canal) → Efeito Quando todo mundo se junta num lugar, só aquele núcleo satura, e os outros ficam com folga → Na tela Só aquela área tem lag, as outras estão normais
Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Infraestrutura de servidores (Equipe de infraestrutura)
O que fazer (Equipe de desenvolvimento)
Distribuir entre canais, paralelizar dentro da área, limitar o número de jogadores.
O que fazer (Equipe de infraestrutura)
Incluir o uso de CPU por núcleo no monitoramento e nos alertas (na média do servidor inteiro, a saturação de um núcleo some).
Números de referência
Num servidor de 16 núcleos, mesmo com um núcleo em 100%, o uso total de CPU aparece como cerca de 6%. Só olhando o uso por núcleo dá para achar.
No gráfico
Sobe com a carga · Uso de CPU por núcleo, CPU por thread
Onde olhar
Uso por núcleo com mpstat -P ALL 1 e CPU por thread do processo do jogo com pidstat -t 1, comparando com o número de jogadores da zona que a thread mais ocupada atende
Confirma se
A CPU total do servidor está baixa, mas uma única thread (um único núcleo) fica perto de 100%, e nesse momento a zona dessa thread está lotada
Descarta se
Vários núcleos altos por igual: sobrecarga do servidor inteiro. Só o %soft (processamento de recepção) de um núcleo alto: aponta para interrupções da NIC concentradas em um só núcleo
Como verificar
Ferramentas de infra (sem precisar do código do jogo)
Saiba mais
As outras áreas só ficam normais quando cada área roda o seu tick separadamente. Se as threads das várias áreas esperam umas pelas outras a cada tick para avançar juntas ao próximo, a área mais ocupada atrasa o tick do servidor inteiro.
Time Dilation – How’s That Going?CCP Games O Time Dilation do EVE Online age por nó, então até sistemas solares distantes que estão no mesmo nó ficam lentos; batalhas grandes rodam em nós reforçados com apenas 4 sistemas solares
mpstat(1) — Linux manual pagesysstat Mostra separadamente o uso por processador e a média geral (-P ALL); %soft é a proporção de tempo gasto tratando interrupções de software