Mientras el servidor físico (hipervisor) cede por un momento el tiempo de CPU de la máquina virtual a otra máquina virtual (CPU steal), el servidor del juego se detiene.
Por qué Otra máquina virtual del mismo host usa mucha CPU → Efecto Nuestra máquina virtual pierde turnos de ejecución de varios ms a decenas de ms cada vez → En pantalla Picos de tiempo de tick sin causa aparente: tirones y congelamiento
Responsable principal Infraestructura de servidores (Equipo de infraestructura) · También Externo (Externo)
Tareas (Equipo de infraestructura)
Monitorear el indicador de steal (st de top y vmstat), usar núcleos u hosts dedicados, evitar las instancias de tipo ráfaga (burstable), que se ralentizan al agotar sus créditos de CPU, detener y volver a iniciar las instancias con steal alto sostenido para moverlas a otro host.
Tareas (Externo)
Informar al proveedor de nube de los hosts con steal alto sostenido.
En el gráfico
Picos aleatorios · %steal, tiempo de tick del servidor
Dónde mirar
%steal de mpstat -P ALL 1 en el mismo eje de tiempo que el tiempo de tick del servidor
Se confirma si
%steal sube a la vez que los picos de tick y baja al detener la instancia y volver a iniciarla en otro host
Se descarta si
Si %steal está cerca de 0 y aun así hay picos de tick, la causa está dentro del servidor del juego (“Pausa stop-the-world del GC en el servidor”, “Contención de locks”). En contenedores: “Throttling de CPU en contenedores (cuota de CFS)”
Se verifica con
Con herramientas de infraestructura (no hace falta código del juego)
Fuentes
proc_stat(5) — Linux manual pageLinux man-pages steal: tiempo que se pierde en un entorno virtualizado mientras se ejecutan otros sistemas operativos
mpstat(1) — Linux manual pagesysstat %steal: porcentaje de tiempo que esta CPU virtual tuvo que esperar mientras el hipervisor atendía a otra CPU virtual