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

Libro blanco del lag en juegos › L2 SO y dispositivo del cliente

Resolución del temporizador Timer resolution (Windows 15.6ms)

ID de la causa co-timer · Responsable principal Desarrollo de cliente (Equipo de desarrollo)

Abrir la ficha interactiva con gráficos y simulaciones →

El temporizador predeterminado de Windows funciona en pasos de 15.6 ms, así que “esperar solo 1 ms” se alarga en la práctica hasta el siguiente ciclo del temporizador, hasta 15.6 ms.

Por qué El límite de FPS y el envío de paquetes se implementan con Sleep (una espera breve) → Efecto El SO solo despierta al proceso en pasos de 15.6 ms → En pantalla El intervalo entre frames y el intervalo de envío de inputs se vuelven irregulares

Síntomas
Tirones
Factores
Jitter
A quién afecta
Solo yo
Cuándo
Siempre
Responsable
Responsable principal Desarrollo de cliente (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Usar temporizadores de alta resolución, regular el ritmo con eventos o con V-Sync, sin depender de esperas.
Cifras de referencia
Con pasos de 15.6 ms no se puede clavar un intervalo de 16.7 ms, así que el intervalo entre frames oscila entre 15.6 ms y 31.2 ms.
En el gráfico
Siempre alto · Distribución del intervalo entre frames
Dónde mirar
Distribución de MsBetweenPresents (intervalo entre frames) de PresentMon y el apartado “Platform Timer Resolution” del informe de powercfg /energy (procesos que cambiaron la resolución del temporizador)
Se confirma si
Los intervalos entre frames se concentran en múltiplos de 15.6 ms, como 15.6 ms y 31.2 ms, y el juego no pide una resolución de temporizador mayor
Se descarta si
Si los intervalos se reparten de forma uniforme, es poco probable que sea el temporizador. Más probable: “Procesos en segundo plano que ocupan la CPU” o la carga del frame
Se verifica con
En el entorno del jugador
Para saber más
En versiones antiguas de Windows, si un programa cambiaba el temporizador a 1 ms, el cambio se aplicaba a todos los programas. De ahí venía la idea de que “con el navegador abierto el juego va más fluido”. Desde Windows 10, versión 2004, solo se aplica al programa que lo pide, y Windows 11 puede ignorar la solicitud de ventanas minimizadas o totalmente tapadas que no emiten sonido.

Fuentes

  1. _WDF_TIMER_CONFIG (wdftimer.h) Microsoft
    La precisión de un temporizador normal es el intervalo del tick del reloj del sistema, 15.6 ms por defecto; la de un temporizador de alta resolución, 1 ms
  2. timeBeginPeriod function (timeapi.h) Microsoft
    Antes de Windows 10, versión 2004, era un ajuste global; después solo se aplica al proceso que lo pide, y Windows 11 no garantiza la alta resolución a los procesos de ventanas tapadas o minimizadas
  3. CreateWaitableTimerExW function (synchapi.h) Microsoft
    Flag del temporizador de espera de alta resolución: CREATE_WAITABLE_TIMER_HIGH_RESOLUTION
  4. PresentMon Capture Application (README-CaptureApplication.md) Intel
    MsBetweenPresents: tiempo (ms) entre esta llamada a Present() y la anterior
  5. Results for the Idle Energy Efficiency Assessment Microsoft
    Resolución predeterminada del temporizador del sistema: 15.6 ms; el apartado “Platform Timer Resolution” del informe de energía muestra qué procesos cambiaron la resolución del temporizador
  6. Powercfg command-line options Microsoft
    powercfg /energy: analiza el sistema y genera un informe de energía (HTML)

Ver también

Misma capa: L2 SO y dispositivo del cliente

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

Ver la ficha interactiva con gráficos y simulaciones