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

Libro blanco del lag en juegos › L9 Proceso del juego en el servidor

Sobrecarga de una zona de un solo hilo (hotspot) Single-threaded hot zone

ID de la causa sp-hotzone · Responsable principal Desarrollo de servidor (Equipo de desarrollo) · También Infraestructura de servidores (Equipo de infraestructura)

Abrir la ficha interactiva con gráficos y simulaciones →

En un diseño con un hilo por zona, si la gente se concentra en un lugar, solo ese núcleo llega al 100%.

Por qué Un solo hilo lleva una zona (canal) → Efecto Cuando la gente se concentra en un lugar, solo ese núcleo se satura y los demás están desocupados → En pantalla Solo esa zona tiene lag; las demás van bien

Síntomas
Cámara lenta, Input lag
Factores
Detención
A quién afecta
Una zona o un canal
Cuándo
Cuando se junta mucha gente
Responsable
Responsable principal Desarrollo de servidor (Equipo de desarrollo) · También Infraestructura de servidores (Equipo de infraestructura)
Tareas (Equipo de desarrollo)
Distribuir entre canales, paralelizar dentro de la zona, poner un tope de jugadores.
Tareas (Equipo de infraestructura)
Añadir el uso de CPU por núcleo al monitoreo y las alertas (en la media de todo el servidor, la saturación de un núcleo pasa desapercibida).
Cifras de referencia
En un servidor de 16 núcleos, aunque un núcleo esté al 100%, el uso de CPU de todo el servidor aparece en torno al 6%. Solo se detecta mirando el uso por núcleo.
En el gráfico
Sube con la carga · Uso de CPU por núcleo, CPU por hilo
Dónde mirar
Uso por núcleo con mpstat -P ALL 1 y CPU por hilo del proceso del juego con pidstat -t 1, comparados con los jugadores de la zona que lleva el hilo más ocupado
Se confirma si
La CPU de todo el servidor es baja, pero un solo hilo (un núcleo) está pegado cerca del 100%, y a esa hora hay mucha gente en la zona que lleva ese hilo
Se descarta si
Si varios núcleos están altos por igual, es una sobrecarga de todo el servidor. Si solo es alto el %soft (procesamiento de recepción) de un núcleo, apunta a “Interrupciones de la NIC concentradas en un solo núcleo”
Se verifica con
Con herramientas de infraestructura (no hace falta código del juego)
Para saber más
Que las demás zonas vayan bien solo es cierto cuando cada zona ejecuta su propio tick. Si los hilos de varias zonas se esperan entre sí en cada tick para pasar juntos al siguiente, la zona más ocupada retrasa el tick de todo el servidor.
Casos reales
CCP Games 2014: Sobrecarga del servidor en la gran batalla de flotas de HED-GP en EVE Online

Fuentes

  1. Time Dilation – How’s That Going? CCP Games
    La Time Dilation de EVE Online funciona por nodo, así que también se ralentizan sistemas solares lejanos alojados en el mismo nodo; las grandes batallas se procesan en nodos reforzados que solo alojan 4 sistemas solares
  2. mpstat(1) — Linux manual page sysstat
    Muestra por separado el uso de cada procesador y la media global (-P ALL); %soft es el porcentaje de tiempo dedicado a procesar interrupciones de software
  3. pidstat(1) — Linux manual page sysstat
    -t muestra también las estadísticas por hilo del proceso (uso de CPU, entre otras)

Ver también

Misma capa: L9 Proceso del juego en el servidor

Causas de otras capas con el mismo síntoma (Cámara lenta)

Ver la ficha interactiva con gráficos y simulaciones