Perché i giochi scattano su Windows 11 (e come trovare la vera causa)

Uno scatto è un frame arrivato in ritardo, non un frame rate basso — le cause che lasciano una traccia, come capire qual è la tua, e che cosa fare per ciascuna.

Il tuo contatore dice 160. Il gioco dà uno scossone lo stesso — una frazione di secondo in cui l'immagine si ferma, la tua mira finisce in un punto in cui non l'avevi messa, e poi va tutto di nuovo bene. Il contatore non si è mosso, ed è per questo che niente di quello che fai per alzarlo serve a qualcosa.

Quella distanza è tutto l'argomento di questa pagina. Uno scatto è un frame arrivato in ritardo, non un frame rate basso. Un contatore di frame fa la media su un secondo, quindi un solo frame durato 90 ms sparisce dentro i 159 frame corti che gli stanno accanto. Il numero che descrive quello che hai sentito è il frame time, e uno scatto è un frame molto più lento dei suoi vicini.

Prima di tutto, la frase onesta. Due delle dieci cause qui sotto corrispondono a una singola casella di w0a: il valore dello scheduler nella causa 8 e il registratore di gioco in background nella causa 9. Le due caselle si limitano a rimettere un'impostazione dove deve stare, e su una macchina che nessuno ha toccato la prima non trova niente da cambiare. Se lo scatto che senti fosse uno di questi, te lo può dire solo una cattura prima e dopo.

Prima di tutto, capisci quale dei tre problemi hai

Vengono chiamati con la stessa parola e non hanno quasi niente in comune.

Prendi una registrazione prima di cambiare qualsiasi cosa

È tirare a indovinare che fa durare settimane questa cosa. Una cattura del gioco a cui giochi davvero, nel punto in cui scatta davvero, trasforma «che cosa potrebbe essere» in «che cosa è successo a quel picco» — ed è il «prima» rispetto a cui verrà giudicato ogni cambiamento successivo. Leggere il benchmark spiega come.

Le cause, una per una

1. Un driver che tiene occupato un core del processore

Mentre un driver sta dentro un interrupt o una chiamata differita, quel core gira sopra ogni priorità di thread che esista: non disegna niente e non legge input finché il driver non lascia la presa. È una causa che sfugge facilmente: non compare in nessun grafico dei frame time e in nessun task manager.

Come lo scopri: misuralo. La sezione sul kernel di leggere il test di latenza elenca ogni driver che ha tenuto occupato un core, ordinato per occupazione più lunga, con il nome del file. Oltre circa 1 ms un driver sta spostando i report di input; da 4 ms in su la macchina non riesce a tenere un frame time stabile qualunque altra cosa tu cambi.

Che cosa fai: aggiorna quel singolo driver dal produttore dell'hardware — non tutto il sistema, il file che ti viene nominato. I driver di rete, di archiviazione e audio sono tra i driver che possono farlo.

2. Shader che vengono compilati

Effetto nuovo, area nuova, arma nuova, e il gioco deve compilare uno shader prima di poterlo disegnare. La compilazione avviene sulla CPU mentre il frame aspetta.

Come lo scopri: è peggiore nei primi minuti di una sessione o di una mappa, sfuma mentre giochi, e torna dopo un aggiornamento del driver o del gioco. Se i tuoi scatti non sfumano, non è questo — scatti da compilazione degli shader è la versione lunga.

Che cosa fai: giocaci attraverso, e non fare benchmark dentro quella finestra; misureresti il compilatore.

3. Il disco da cui il gioco carica in streaming

Un gioco che tira dentro gli asset mentre ti muovi fa scatti quando la lettura è lenta, e il frame che aspetta quei dati è quello in ritardo.

Come lo scopri: gli intoppi coincidono con l'ingresso in un'area nuova, e gli intervalli fra frame lunghi cadono nella stessa finestra dell'attività del disco. Controlla le cose ovvie: se il gioco sta su un disco meccanico, se il disco è quasi pieno, se la cartella del gioco sta dentro una cartella sincronizzata sul cloud che carica ogni scrittura, se il file di paging sta su un disco a piatti rotanti. Un SSD per un gioco che carica in streaming non è un tweak, è la risposta.

4. Pressione sulla memoria

Quando la RAM si riempie, Windows sposta delle pagine sul disco, e quelle che tornano indietro si sentono come intoppi. Il caso meno ovvio è il limite di commit: man mano che si esaurisce la memoria totale che Windows può distribuire, il gestore della memoria toglie pagine ai programmi ancora in esecuzione, e il gioco sente quei prelievi come blocchi di meno di un secondo. Tutti e due migliorano nel momento in cui chiudi un browser con quaranta schede.

5. Qualcos'altro in esecuzione

Il processo di lavoro di Windows Update, un'attività di manutenzione, una scansione antimalware pianificata, un'esportazione video di cui ti eri dimenticato. Quel lavoro non si ferma quando parte un gioco; si mette in coda per lo stesso core del thread di rendering, quindi si presenta come picchi nei frame time invece che come una media più bassa. Aspettare che finisca è una soluzione legittima.

Come lo scopri: una cattura del benchmark conserva i suoi intervalli di frame più lunghi insieme agli accessi al disco e agli hard fault caduti nella stessa finestra. Se erano processi di manutenzione o dell'antivirus di Windows, la scheda degli intervalli lunghi conta gli intervalli e nomina i processi. È ciò che è coinciso, non la prova che quel lavoro abbia ritardato il frame: l'antivirus legge tutto ciò che apre qualsiasi programma.

6. Calore e limiti di potenza

Quando un chip arriva al suo tetto di temperatura o di potenza il clock viene tirato giù e rispinto su di continuo, e i frame time ondulati sono quello che si sente da dentro. Questa decisione la prende il firmware da sé, senza chiedere niente a Windows. Comincia dopo un po' invece che subito, e segue quanto è calda la stanza.

7. Lo schermo

Un monitor che gira sotto la frequenza di aggiornamento che supporta mette sotto il tuo ritmo dei frame un pavimento che l'hardware non richiede. Controlla la frequenza reale invece di darla per scontata; dopo un'installazione pulita o un cambio di cavo è sbagliata su un numero sorprendente di macchine.

8. Un valore dello scheduler lasciato indietro da un vecchio strumento

Win32PrioritySeparation decide per quanto tempo un thread tiene il processore e quanto tempo in più riceve l'applicazione in primo piano. I valori con quanti lunghi o fissi, o con una quota del primo piano sotto 3:1, cambiano il modo in cui il processore viene diviso tra il gioco e tutto il resto; non è stato misurato che cosa facciano ai frame time. La scheda Memoria e impostazioni di sistema della pagina Fix rimette il valore predefinito di Windows.

9. Gli overlay e lo strato di cattura

Gli overlay disegnano dentro il frame del gioco stesso, e un registratore in background codifica ogni frame perché si possano salvare gli ultimi minuti. Chiudili uno alla volta e prova, invece che tutti insieme.

10. La partita, non la macchina

Un gioco online può fare intoppi per tutti quelli sul server nello stesso momento. Se i contenuti in giocatore singolo sulla stessa macchina sono puliti e la registrazione dei frame time mostra il gioco che presenta normalmente, quella è una risposta davvero utile: non è il tuo PC.

Le due cause per cui w0a ha una casella

Causa 8: «Mantieni la priorità in primo piano al valore giusto (Win32PrioritySeparation)» (pagina Ottimizzazioni)

Un valore DWORD: Win32PrioritySeparation sotto HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl.

Il riferimento di Microsoft per questo valore è una pagina archiviata scritta per Windows 2000; descrive sei bit letti in tre coppie, scritti come AABBCC:

CoppiaChe cosa decideValori
AA (i due bit più alti)Per quanto tempo un thread può girare ogni volta01 più lungo, 10 più corto, 00 o 11 il valore predefinito dell'edizione (più corto su un'edizione workstation)
BB (i due centrali)Se quella durata varia01 variabile, 10 fissa, 00 o 11 il valore predefinito dell'edizione (variabile su un'edizione workstation)
CC (i due più bassi)Quanto tempo in più riceve il programma in primo piano00 uguale (e fisso), 01 2:1, 10 o 11 3:1. Usata solo quando la coppia centrale vuol dire variabile.

Causa 9: «Disattiva Xbox Game DVR» (pagina Ottimizzazioni)

ValoreLa casella scriveValore predefinito di Windows (quello che ripristina la scheda di riparazione)
HKCU\System\GameConfigStore, GameDVR_Enabled01
HKLM\SOFTWARE\Policies\Microsoft\Windows\GameDVR, AllowGameDVR0assente
HKCU\Software\Microsoft\Windows\CurrentVersion\GameDVR, AppCaptureEnabled01
HKCU\Software\Microsoft\GameBar, ShowStartupPanel0assente
HKCU\Software\Microsoft\GameBar, UseNexusForGameBarEnabled0, tranne su un Ryzen X3D a due CCDassente

Sono tutti DWORD. Su un processore X3D a due CCD la casella lascia stare l'ultimo valore: la catena di registrazione viene comunque spenta, ma la parte di Game Bar che il driver di AMD ascolta resta in funzione. È una precauzione, non una causa provata, e il messaggio della casella dice quale strada ha preso. Ryzen X3D, Game Bar e core parking spiega perché quella parte conta su quei chip.

Controlla da te

Questi comandi si limitano a leggere:

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"

Come leggere le risposte:

Che cosa ne fa la scansione

Cosa cerca la scansione degli scatti esegue questi controlli su quello che Windows e i tuoi driver hanno già registrato, ed etichetta ogni risultato come provata, probabile, candidata o non controllata. Due cose che vale la pena sapere: una scansione che trova sempre dieci problemi ti sta vendendo le soluzioni, e un controllo che non è potuto girare viene contato invece che trattato in silenzio come pulito.

Poi cambia una cosa sola e cattura di nuovo la stessa scena. Cinque cambiamenti e una misura non ti dicono niente su quale abbia contato, e tutto quello che non ha mosso un numero va annullato.

Cose che non sono la causa

Tutto questo circola senza fine come soluzione per gli scatti, e w0a si rifiuta di scrivere ognuno di questi valori, per motivi documentati:

Su una macchina a cui la memoria non manca, un pulitore di memoria non cambia niente di misurabile.

Correlati

Giochi a CS2? Quali opzioni di avvio fanno ancora qualcosa e dove stanno davvero i frame nel menu video: CS2, pochi FPS e scatti: una lista di controllo misurata

w0a non cambia nessuna impostazione di Windows finché non glielo chiedi, e un tweak salva il valore precedente prima di scriverne uno nuovo. Avvisami

Questa pagina ti è stata utile?

Cosa mancava, o cosa non ha funzionato? Le leggiamo tutte, una per una.

Se questa pagina non ha risolto il problema, scrivici — dicci quale articolo hai letto, e sistemiamo l'articolo.