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)
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
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.
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
mpstat(1) — Linux manual pagesysstat 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
pidstat(1) — Linux manual pagesysstat -t muestra también las estadísticas por hilo del proceso (uso de CPU, entre otras)