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

Guia do Lag em Jogos › L2 SO e dispositivo do cliente

Resolução do timer Timer resolution (Windows 15.6ms)

ID da causa co-timer · Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento)

Abrir o card interativo, com figuras e simulações →

O timer padrão do Windows trabalha em passos de 15,6 ms, então um “espere só 1 ms” na prática vai até o próximo ciclo do timer, podendo chegar a 15,6 ms.

Por quê Limitação de frames e envio de pacotes implementados com Sleep (espera curta) → Efeito O SO só acorda a thread em passos de 15,6 ms → Na tela Os intervalos entre frames e entre envios de input ficam irregulares

Sintomas
Engasgos
Fatores
Jitter
Quem é afetado
Só eu
Quando
Sempre
Responsável
Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Usar timer de alta resolução, fazer o pacing com base em eventos ou no V-Sync, sem depender de esperas com Sleep.
Números de referência
Com passos de 15,6 ms, não dá para acertar um intervalo de 16,7 ms, e o intervalo entre frames alterna entre 15,6 ms e 31,2 ms.
No gráfico
Sempre alto desde o início · Distribuição dos intervalos entre frames
Onde olhar
Ver a distribuição de MsBetweenPresents (intervalo entre frames) no PresentMon e o item “Platform Timer Resolution” do relatório powercfg /energy (processos que mudaram a resolução do timer)
Confirma se
Os intervalos entre frames se concentram em múltiplos de 15,6 ms, como 15,6 ms e 31,2 ms, e o jogo não pede uma resolução de timer mais alta
Descarta se
Intervalos espalhados de forma uniforme: aponta mais para “Processos em segundo plano ocupando a CPU” ou para a carga do frame do que para o timer
Como verificar
Verificação no ambiente do jogador
Saiba mais
Nas versões antigas do Windows, quando um programa mudava o timer para 1 ms, a mudança valia para todos os programas. Por isso circulava até a dica “com o navegador aberto, o jogo fica mais suave”. A partir do Windows 10 versão 2004, a mudança vale só para o programa que a pediu, e o Windows 11 pode ignorar o pedido de janelas minimizadas ou totalmente encobertas que não estejam emitindo som.

Fontes

  1. _WDF_TIMER_CONFIG (wdftimer.h) Microsoft
    A precisão dos timers comuns é o intervalo do tick do relógio do sistema, 15,6 ms por padrão; a dos timers de alta resolução é de 1 ms
  2. timeBeginPeriod function (timeapi.h) Microsoft
    Antes do Windows 10 versão 2004, era uma configuração global; depois, vale só para o processo que pediu; o Windows 11 não garante a resolução alta para processos com janelas encobertas ou minimizadas
  3. CreateWaitableTimerExW function (synchapi.h) Microsoft
    Flag de timer de espera de alta resolução: CREATE_WAITABLE_TIMER_HIGH_RESOLUTION
  4. PresentMon Capture Application (README-CaptureApplication.md) Intel
    MsBetweenPresents: tempo entre esta chamada de Present() e a anterior (ms)
  5. Results for the Idle Energy Efficiency Assessment Microsoft
    Resolução padrão do timer do sistema: 15,6 ms; o item “Platform Timer Resolution” do relatório de energia mostra os processos que mudaram a resolução do timer
  6. Powercfg command-line options Microsoft
    powercfg /energy: analisa o sistema e gera um relatório de energia (HTML)

Veja também

Mesma camada: L2 SO e dispositivo do cliente

Mesmo sintoma (Engasgos) em outras camadas

Ver o card interativo, com figuras e simulações