Por que os jogos engasgam no Windows 11 (e como achar a causa real)

Engasgo é um quadro que chegou atrasado, não uma taxa de quadros baixa — as causas que deixam rastro, como saber qual delas é a sua, e o que fazer com cada uma.

O seu contador diz 160. O jogo dá um solavanco mesmo assim — uma fração de segundo em que a imagem para, a sua mira vai parar num lugar onde você não a colocou, e depois está tudo bem de novo. O contador nunca se mexeu, e é por isso que nada do que você faz para elevá-lo ajuda.

Essa distância é o assunto inteiro desta página. Engasgo é um quadro que chegou atrasado, não uma taxa de quadros baixa. Um contador de quadros tira a média ao longo de um segundo, então um quadro que levou 90 ms some dentro dos 159 quadros curtos ao lado dele. O número que descreve o que você sentiu é o tempo de quadro, e um engasgo é um quadro muito mais lento que os vizinhos.

Primeiro, a frase honesta. Duas das dez causas abaixo correspondem a uma única caixa no w0a: o valor do agendador na causa 8 e o gravador de jogo em segundo plano na causa 9. As duas caixas só colocam uma configuração onde ela deve estar, e numa máquina que ninguém ajustou a primeira não encontra nada para mudar. Se o engasgo que você sente era uma delas, só uma captura de antes e depois pode dizer.

Primeiro, descubra qual dos três problemas você tem

Eles recebem a mesma palavra e não têm quase nada em comum.

Tenha um registro antes de mudar qualquer coisa

Adivinhar é o que faz isso levar semanas. Uma captura do jogo que você realmente joga, no lugar em que ele realmente engasga, transforma "o que será que é" em "o que aconteceu naquele pico" — e é o "antes" contra o qual toda mudança posterior é julgada. Como ler o benchmark explica como.

As causas, uma por uma

1. Um driver segurando um núcleo do processador

Enquanto um driver está dentro de uma interrupção ou de uma chamada adiada, aquele núcleo roda acima de qualquer prioridade de thread que exista: ele não desenha nada e não lê entrada nenhuma até o driver soltar. É uma causa que passa despercebida com facilidade: não aparece em gráfico de tempo de quadro nenhum nem em gerenciador de tarefas nenhum.

Como saber: meça. A seção de kernel de como ler o teste de latência lista cada driver que segurou um núcleo, pela retenção mais longa, com o nome do arquivo. Passando de cerca de 1 ms, um driver está deslocando relatórios de entrada; de 4 ms para cima, a máquina não consegue manter um tempo de quadro estável por mais que você mude outras coisas.

O que fazer: atualize aquele driver específico pelo fabricante do hardware — não o sistema inteiro, o arquivo nomeado. Drivers de rede, de armazenamento e de áudio estão entre os drivers que podem fazer isso.

2. Shaders sendo compilados

Efeito novo, área nova, arma nova, e o jogo tem de compilar um shader antes de conseguir desenhá-lo. A compilação acontece na CPU enquanto o quadro espera.

Como saber: é pior nos primeiros minutos de uma sessão ou de um mapa, vai sumindo conforme você joga, e volta depois de uma atualização de driver ou de jogo. Se o seu engasgo não vai sumindo, não é isto — engasgos de compilação de shaders é a versão longa.

O que fazer: jogue até passar, e não faça benchmark dentro dessa janela; você estaria medindo o compilador.

3. O disco de onde o jogo faz streaming

Um jogo que puxa assets conforme você se move engasga quando a leitura está lenta, e o quadro que espera por esses dados é o atrasado.

Como saber: os solavancos coincidem com a entrada numa área nova, e os intervalos longos de quadro caem na mesma janela que a atividade de disco. Confira o óbvio: o jogo está num disco mecânico, o disco está quase cheio, a pasta do jogo está dentro de uma pasta sincronizada com a nuvem que envia cada gravação, o arquivo de paginação está num disco que gira. Um SSD para um jogo que faz streaming não é um tweak, é a resposta.

4. Pressão de memória

Quando a RAM enche, o Windows move páginas para o disco, e as páginas voltando são sentidas como solavancos. O caso menos óbvio é o limite de commit: conforme a memória total que o Windows pode entregar vai acabando, o gerenciador de memória tira páginas de programas que ainda estão rodando, e o jogo sente esses cortes como congelamentos de menos de um segundo. Os dois melhoram no instante em que você fecha um navegador com quarenta abas.

5. Outra coisa rodando

O worker do Windows Update, uma tarefa de manutenção, uma varredura de malware agendada, uma exportação de vídeo que você esqueceu. Esse trabalho não para quando um jogo começa; ele entra na fila do mesmo núcleo que a thread de renderização, então aparece como picos de tempo de quadro e não como uma média mais baixa. Esperar passar é uma solução legítima.

Como saber: uma captura do benchmark guarda os intervalos de frame mais longos junto com os acessos ao disco e os hard faults que caíram na mesma janela. Se eram processos de manutenção ou do antivírus do Windows, o cartão de intervalos longos conta esses intervalos e nomeia os processos. Isso é o que coincidiu, não a prova de que esse trabalho atrasou o frame: o antivírus lê tudo o que qualquer programa abre.

6. Calor e limites de energia

Quando um chip bate no teto de temperatura ou de energia, o clock é puxado para baixo e empurrado de volta para cima repetidamente, e tempos de quadro ondulados são o que isso parece por dentro. Quem toma essa decisão é o firmware, sozinho, sem perguntar ao Windows. Começa depois de um tempo em vez de imediatamente, e acompanha o quanto o ambiente está quente.

7. A tela

Um monitor rodando abaixo da taxa de atualização que ele suporta põe um piso no seu ritmo de quadros que o hardware não exige. Confira a taxa de verdade em vez de supor; ela está errada num número surpreendente de máquinas depois de uma instalação nova ou de uma troca de cabo.

8. Um valor do agendador deixado para trás por uma ferramenta antiga

O Win32PrioritySeparation decide por quanto tempo uma thread fica com o processador e quanto tempo a mais o aplicativo em primeiro plano recebe. Valores com quantums longos ou fixos, ou com uma fatia do primeiro plano abaixo de 3:1, mudam como o processador é dividido entre o jogo e todo o resto; não foi medido o que isso faz com o tempo de quadro. O cartão Padrões de memória e sistema da página Fix devolve o padrão do Windows.

9. Overlays e a camada de captura

Os overlays desenham dentro do próprio quadro do jogo, e um gravador em segundo plano codifica cada quadro para que os últimos minutos possam ser salvos. Feche um de cada vez e teste, em vez de fechar todos de uma vez.

10. A partida, não a máquina

Um jogo online pode dar solavancos para todo mundo do servidor ao mesmo tempo. Se o conteúdo para um jogador só, na mesma máquina, sai limpo e o registro de tempo de quadro mostra o jogo apresentando normalmente, essa é uma resposta genuinamente útil: não é o seu PC.

As duas causas para as quais o w0a tem uma caixa

Causa 8: "Manter a prioridade de primeiro plano no valor certo (Win32PrioritySeparation)" (página Otimizações)

Um valor DWORD: Win32PrioritySeparation em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl.

A referência da Microsoft para ele é uma página arquivada escrita para o Windows 2000; ela descreve seis bits lidos em três pares, escritos como AABBCC:

ParDecideValores
AA (os dois bits mais altos)Por quanto tempo uma thread pode rodar de cada vez01 mais longo, 10 mais curto, 00 ou 11 o padrão da própria edição (mais curto numa edição de estação de trabalho)
BB (os dois do meio)Se essa duração varia01 variável, 10 fixa, 00 ou 11 o padrão da edição (variável numa edição de estação de trabalho)
CC (os dois mais baixos)Quanto tempo a mais o programa em primeiro plano recebe00 igual (e fixo), 01 2:1, 10 ou 11 3:1. Só é usado quando o par do meio significa variável.

Causa 9: "Desativar o Xbox Game DVR" (página Otimizações)

ValorO que a caixa escrevePadrão do Windows (o que o cartão de reparo restaura)
HKCU\System\GameConfigStore, GameDVR_Enabled01
HKLM\SOFTWARE\Policies\Microsoft\Windows\GameDVR, AllowGameDVR0ausente
HKCU\Software\Microsoft\Windows\CurrentVersion\GameDVR, AppCaptureEnabled01
HKCU\Software\Microsoft\GameBar, ShowStartupPanel0ausente
HKCU\Software\Microsoft\GameBar, UseNexusForGameBarEnabled0, exceto num Ryzen X3D com dois CCDsausente

Todos são DWORD. Num processador X3D com dois CCDs, a caixa deixa o último valor em paz: o pipeline de gravação continua desligado, mas a parte do Game Bar que o driver da AMD escuta segue rodando. Isso é uma precaução, não uma causa comprovada, e a mensagem da caixa diz qual caminho ela seguiu. Ryzen X3D, Game Bar e core parking explica por que essa parte importa nesses chips.

Confira você mesmo

Estes comandos só leem:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl" /v Win32PrioritySeparation
reg query "HKCU\System\GameConfigStore" /v GameDVR_Enabled
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\GameDVR"
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\GameDVR" /v AllowGameDVR
reg query "HKCU\Software\Microsoft\GameBar"

Como ler as respostas:

O que a análise faz com tudo isso

O que a análise de engasgos procura roda essas verificações contra o que o Windows e os seus drivers já registraram, e marca cada achado como comprovado, provável, candidato ou não verificado. Duas coisas que vale saber: uma análise que sempre acha dez problemas está te vendendo as soluções, e uma verificação que não pôde rodar é contada em vez de ser tratada calada como limpa.

Depois mude uma coisa e capture a mesma cena de novo. Cinco mudanças e uma medição não te dizem nada sobre qual delas importou, e tudo o que não moveu um número deve ser desfeito.

Coisas que não são a causa

Tudo isto circula sem fim como solução para engasgos, e o w0a se recusa a escrever cada um desses valores, por motivos documentados:

Numa máquina que não está com falta de memória, um limpador de memória não muda nada mensurável.

Relacionados

Joga CS2? Quais opções de inicialização ainda fazem alguma coisa e onde estão de verdade os quadros no menu de vídeo: Como aumentar o FPS no CS2 e por que ele fica travando: um checklist medido

O w0a não muda nenhuma configuração do Windows até você pedir, e um tweak guarda o valor antigo antes de gravar um novo. Avise-me

Esta página ajudou?

O que faltou, ou o que não funcionou? Lemos cada uma dessas respostas.

Se esta página não resolveu, escreva para nós — diga qual artigo você leu, e nós vamos corrigi-lo.