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

Libro blanco del lag en juegos › L10 Memoria

Fallo de caché CPU cache misses

ID de la causa mem-cache-miss · Responsable principal Desarrollo de servidor (Equipo de desarrollo)

Abrir la ficha interactiva con gráficos y simulaciones →

Si los datos están dispersos por la memoria, la CPU tiene que ir cada vez hasta la RAM, que es lenta, y esperar.

Por qué Objetos dispersos y enlazados por punteros, a los que se accede sin orden → Efecto Como no están en la caché de la CPU, se leen de la RAM cada vez (alrededor de 100 veces más lento) → En pantalla El mismo trabajo cuesta varias veces más tiempo de tick; en casos graves, cámara lenta

Síntomas
Cámara lenta
Factores
Detención
A quién afecta
Todo el servidor
Cuándo
Siempre, Cuando se junta mucha gente
Responsable
Responsable principal Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Colocar de forma contigua los datos que se usan juntos a menudo (diseño orientado a datos).
En el gráfico
Siempre alto · Tiempo de tick, uso de CPU
Dónde mirar
Medir con perf stat -d -p PID sobre el proceso del servidor del juego las instrucciones por ciclo (insn per cycle) y los fallos de caché L1 y LLC, junto con el tiempo de tick y el uso de CPU
Se confirma si
La CPU está ocupada todo el tiempo, pero insn per cycle es bajo y hay muchos fallos de LLC. Se confirma si, en una build con otra disposición de los datos, el tiempo de tick con el mismo número de jugadores baja mucho
Se descarta si
Si el uso de CPU es bajo pero el tick va lento, apunta a esperas fuera de la CPU, como locks o E/S
Se verifica con
Con herramientas de infraestructura (no hace falta código del juego)

Fuentes

  1. Designs, Lessons and Advice from Building Large Distributed Systems (LADIS 2009 keynote) Google
    Caché L1 0.5 ns, caché L2 7 ns, memoria principal 100 ns (datos de 2009): ir hasta la RAM es uno o dos órdenes de magnitud más lento que la caché
  2. perf-stat(1) — Linux manual page perf
    -p cuenta los eventos de hardware de un proceso en ejecución y muestra insn per cycle; -d añade los eventos de la caché de datos L1 y LLC

Ver también

Misma capa: L10 Memoria

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

Ver la ficha interactiva con gráficos y simulaciones