한국어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

Tick que excede su presupuesto Tick overrun

ID de la causa sp-tick-overrun · 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 →

Si el trabajo de un tick supera su presupuesto, el intervalo de tick del servidor se alarga y toda esa zona va más lenta o va a tirones.

Por qué El trabajo de un tick (p. ej., 50 ms) supera su presupuesto → Efecto El estado del juego, que debería calcularse 20 veces por segundo, se calcula solo 8 → En pantalla Cámara lenta en toda la zona (o tirones, según el diseño del servidor), habilidades que responden tarde

Síntomas
Cámara lenta, Input lag, Tirones
Factores
Detención
A quién afecta
Una zona o un canal, Todo el servidor
Cuándo
Cuando se junta mucha gente, Horas pico de la noche
Responsable
Responsable principal Desarrollo de servidor (Equipo de desarrollo) · También Infraestructura de servidores (Equipo de infraestructura)
Tareas (Equipo de desarrollo)
Reducir los cálculos costosos, repartir el tick entre varios hilos, distribuir a los jugadores (canales), registrar el tiempo de procesamiento del tick como métrica.
Tareas (Equipo de infraestructura)
Añadir el tiempo de tick y el uso de CPU por núcleo al monitoreo y las alertas, evaluar CPU e instancias con alto rendimiento por núcleo (frecuencia de reloj).
Cifras de referencia
El presupuesto de un servidor de 20 ticks es de 50 ms; el de uno de 30 ticks, 33 ms, y el de uno de 60 ticks, 16.7 ms. Para aguantar las aglomeraciones repentinas, lo seguro es dejar margen y usar normalmente solo alrededor de la mitad del presupuesto.
En el gráfico
Sube con la carga · Tiempo de tick del servidor, jugadores por zona y canal, CPU del hilo del juego
Dónde mirar
Tiempo de procesamiento del tick (p99) y número de ticks excedidos que registra el servidor, en el mismo gráfico que los jugadores por zona y canal. Sin métricas de tick, uso de CPU del hilo del juego con pidstat -t 1
Se confirma si
Cuando se junta gente, el tiempo de tick supera el presupuesto (50 ms a 20 ticks), con el hilo del juego cerca del 100% de CPU mientras tanto
Se descarta si
Ticks excedidos con poca CPU en el hilo del juego: apunta a esperas (pausa del GC, locks, llamadas síncronas). Si la latencia de la cola de ejecución en runqlat de bcc es alta, los hilos no reciben CPU: falta de CPU o exceso de hilos
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego
Para saber más
Cómo se ve un tick retrasado depende del diseño del servidor. En un servidor que avanza el estado del juego un tiempo fijo por tick (p. ej., 50 ms), el propio tiempo del juego se ralentiza y aparece la cámara lenta. En uno que avanza de una vez todo el tiempo real transcurrido, el ritmo del juego se mantiene, pero los paquetes llegan espaciados y con movimientos grandes, y se ve como tirones y teletransporte. En ambos casos, los inputs responden tarde. Si un solo hilo del juego lleva todo el servidor, se ralentiza el servidor entero; si hay un hilo por zona, solo esa zona. Algunos juegos, como EVE Online, ralentizan a propósito el tiempo del juego hasta 10 veces en las batallas masivas (Time Dilation) para que el cálculo se ponga al día.
Casos reales
CCP Games 2014: Sobrecarga del servidor en la gran batalla de flotas de HED-GP en EVE Online

Fuentes

  1. VALORANT's 128-Tick Servers Riot Games
    Un servidor de 128 ticks debe terminar cada frame en 7.8125 ms; medir el tiempo de frame del servidor por subsistema y repartir el presupuesto entre ellos
  2. HED-GP Technical Retrospective: What a HED-ache CCP Games
    En sobrecarga, EVE Online ralentiza el tiempo del juego con Time Dilation hasta un mínimo del 10% (10 veces más lento); en condiciones normales, la CPU de los nodos está por debajo del 80%
  3. Handling variation in time Unity
    Cuando una simulación de paso fijo se atrasa, ejecuta seguidos los pasos para ponerse al día y descarta el tiempo que supera el límite, así que el tiempo del juego corre más despacio que el real
  4. pidstat(1) — Linux manual page sysstat
    -t muestra también las estadísticas por hilo del proceso (uso de CPU, entre otras)
  5. Demonstrations of runqlat, the Linux eBPF/bcc version IO Visor
    Muestra como histograma la latencia de la cola de ejecución del planificador (el tiempo que una tarea espera hasta recibir CPU)

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