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

Libro blanco del lag en juegos › L11 Disco

Carga diferida (lazy loading) en el servidor Lazy loading on the server

ID de la causa dk-lazy-load · 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 servidor lee del disco los datos de una mazmorra o un mapa la primera vez que se los piden, el juego se detiene para todos durante ese tick.

Por qué Alguien entra por primera vez en una mazmorra o una zona → Efecto El servidor lee los datos del disco desde el hilo del juego → En pantalla Congelamiento breve para todos los jugadores de ese servidor

Síntomas
Congelamiento
Factores
Detención
A quién afecta
Una zona o un canal, Todo el servidor
Cuándo
Al moverse o cambiar de zona
Responsable
Responsable principal Desarrollo de servidor (Equipo de desarrollo) · También Infraestructura de servidores (Equipo de infraestructura)
Tareas (Equipo de desarrollo)
Precargar los datos al arrancar el servidor, cargar de forma asíncrona.
Tareas (Equipo de infraestructura)
En servidores recién creados desde una instantánea, precalentar el disco antes de ponerlos en servicio (leer todos los bloques una vez) o usar la restauración rápida de instantáneas.
En el gráfico
Picos aleatorios · Tiempo de tick del servidor, lecturas de disco
Dónde mirar
Cruzar la hora de las detenciones con los registros de primera entrada a mazmorras o zonas del log del servidor del juego; en ese momento, revisar las lecturas de disco del servidor del juego (kB_rd/s de pidstat -d) y las llamadas read y open lentas con perf trace --duration. En servidores en la nube recién levantados, comparar VolumeAvgReadLatency de EBS con el de los servidores antiguos
Se confirma si
Solo se detiene la primera vez que alguien entra; al entrar por segunda vez en el mismo sitio, no. Durante la detención, el hilo del juego está esperando una lectura de archivo
Se descarta si
Si se detiene igual en zonas ya cargadas, apunta a otra causa (tick excedido, GC)
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego
Para saber más
En la nube, un servidor recién creado desde una instantánea (copia del disco) tiene que descargar del almacenamiento remoto cada bloque la primera vez que lo lee, y va mucho más lento de lo normal. Si la primera entrada tarda mucho más solo en los servidores recién levantados por el autoescalado, hay que sospechar de esta causa.

Fuentes

  1. Initialize Amazon EBS volumes AWS
    Los volúmenes creados desde una instantánea tienen más latencia y menos rendimiento mientras descargan los bloques desde S3; se inicializan de antemano leyendo todos los bloques con dd o fio
  2. Amazon EBS fast snapshot restore AWS
    La restauración rápida de instantáneas entrega volúmenes ya inicializados desde su creación y elimina la latencia del primer acceso
  3. pidstat(1) — Linux manual page sysstat
    -d: kB_rd/s por proceso (lectura de disco por segundo)
  4. perf-trace(1) — Linux manual page perf
    --duration muestra solo las llamadas al sistema que tardan más de los ms indicados
  5. Amazon CloudWatch metrics for Amazon EBS AWS
    VolumeAvgReadLatency: latencia media de lectura por minuto (instancias Nitro)

Ver también

Misma capa: L11 Disco

Causas de otras capas con el mismo síntoma (Congelamiento)

Ver la ficha interactiva con gráficos y simulaciones