Počitadlo ukazuje 160. Hra přesto škubne — zlomek sekundy, kdy se obraz zastaví, míření skončí někde, kam jsi ho nedal, a pak je zase všechno v pořádku. Počitadlo se ani nehnulo, a právě proto nepomáhá nic, čím ho zkoušíš zvednout.
Tenhle rozpor je celé téma téhle stránky. Trhání je snímek, který přišel pozdě, ne nízká snímková frekvence. Počitadlo snímků průměruje přes sekundu, takže jeden snímek, který trval 90 ms, zmizí uvnitř těch 159 krátkých vedle něj. Číslo, které popisuje, co jsi cítil, je čas snímku, a trhnutí je snímek mnohem pomalejší než jeho sousedé.
Nejdřív poctivá věta. Dvě z deseti příčin níže odpovídají jednomu políčku ve w0a: hodnota plánovače v příčině 8 a nahrávání hry na pozadí v příčině 9. Obě políčka jen dají nastavení tam, kam patří, a na stroji, který nikdo neladil, to první nenajde nic ke změně. Jestli trhání, které cítíš, byla jedna z nich, ti může říct jen záznam před a po.
Nejdřív zjisti, který ze tří problémů máš
Říká se jim stejným slovem a nemají spolu skoro nic společného.
- Záseky. Základ je v pořádku a jednou za čas se stane něco dlouhého. To je tahle stránka.
- Drsný základ. Nic dramatického, ale hra nikdy nepůsobí plynule. To je problém percentilů: vysoké průměrné FPS, ale špatné 1% low.
- Propad. Snímková frekvence spadne a zůstane dole na sekundy nebo minuty. Úplně jiné příčiny: náhlé propady FPS ve hrách.
Pořiď si záznam dřív, než cokoli změníš
Kvůli hádání tohle trvá týdny. Záznam hry, kterou opravdu hraješ, tam, kde opravdu trhá, promění „co by to mohlo být“ na „co se stalo u té špičky“ — a je to to „před“, proti kterému se poměřuje každá pozdější změna. Jak na to, popisuje Jak číst výsledek benchmarku.
Příčiny, jedna po druhé
1. Ovladač, který drží jádro procesoru
Dokud je ovladač uvnitř přerušení nebo odloženého volání procedury, běží to jádro nad každou existující prioritou vlákna: nic nevykreslí a nepřečte žádný vstup, dokud ovladač nepustí. Tuhle příčinu snadno přehlédneš: neobjeví se v žádném grafu časů snímků ani v žádném správci úloh.
Jak to poznáš: změř to. Sekce o jádře v čtení testu latence vypíše každý ovladač, který jádro držel, seřazený podle nejdelšího držení a s názvem souboru. Zhruba od 1 ms ovladač vytlačuje reporty vstupu; od 4 ms výš si počítač neudrží stabilní čas snímku, ať změníš cokoli jiného.
Co s tím: aktualizuj ten jeden ovladač od výrobce hardwaru — ne celý systém, ten pojmenovaný soubor. Ovladače sítě, úložiště a zvuku patří mezi ovladače, které to můžou dělat.
2. Kompilace shaderů
Nový efekt, nová oblast, nová zbraň — a hra musí zkompilovat shader, než ho může vykreslit. Kompilace běží na procesoru, zatímco snímek čeká.
Jak to poznáš: je to nejhorší v prvních minutách sezení nebo mapy, během hraní to odeznívá a po aktualizaci ovladače nebo hry se to vrátí. Jestli tvoje trhání neodeznívá, není to tohle — trhání při kompilaci shaderů je dlouhá verze.
Co s tím: prohraj se tím, a v tom okně nebenchmarkuj; měřil bys překladač.
3. Disk, ze kterého hra streamuje
Hra, která si při tvém pohybu dotahuje assety, trhá, když je čtení pomalé, a pozdní snímek je ten, který na ta data čeká.
Jak to poznáš: záseky se kryjí se vstupem do nové oblasti a dlouhé intervaly mezi snímky padnou do stejného okna jako aktivita disku. Zkontroluj to zjevné: leží hra na mechanickém disku, není disk skoro plný, není složka hry uvnitř složky synchronizované do cloudu, která odesílá každý zápis, neleží stránkovací soubor na točivém disku. SSD pro streamující hru není tweak, je to odpověď.
4. Tlak na paměť
Když se RAM zaplní, Windows odsouvají stránky na disk a jejich návrat je cítit jako záseky. Méně zjevný případ je limit potvrzené paměti: jak dochází celková paměť, kterou Windows můžou rozdat, správce paměti odebírá stránky programům, které pořád běží, a hra ty odběry cítí jako podsekundová zamrznutí. Obojí se zlepší ve chvíli, kdy zavřeš prohlížeč se čtyřiceti panely.
5. Něco jiného běží
Pracovní proces Windows Update, údržbová úloha, naplánovaná kontrola na malware, export videa, na který jsi zapomněl. Ta práce se spuštěním hry nezastaví; staví se do fronty na stejné jádro jako vykreslovací vlákno, takže se projeví jako špičky v časech snímků, ne jako nižší průměr. Přečkat to je legitimní oprava.
Jak to poznáš: záznam benchmarku si drží nejdelší intervaly mezi snímky spolu s prací disku a hard faulty, které padly do stejného okna. Pokud šlo o procesy údržby nebo antiviru Windows, karta dlouhých intervalů ty intervaly spočítá a procesy pojmenuje. Je to to, co se sešlo, ne důkaz, že snímek zdržela právě tahle práce: antivirus čte vše, co otevře jakýkoli program.
6. Teplo a limity příkonu
Když čip narazí na svůj teplotní strop nebo strop příkonu, takt se opakovaně stahuje dolů a zase tlačí nahoru, a zevnitř se to projeví jako zvlněné časy snímků. Rozhoduje o tom firmware sám, aniž by se ptal Windows. Nezačne to hned, ale po chvíli, a kopíruje to, jak je teplo v místnosti.
7. Obrazovka
Monitor běžící pod obnovovací frekvencí, kterou podporuje, podkládá rovnoměrnost tvých snímků dnem, které hardware nevyžaduje. Skutečnou frekvenci si zkontroluj, místo abys ji předpokládal; po čisté instalaci nebo po výměně kabelu bývá špatně na překvapivě velkém počtu počítačů.
8. Hodnota plánovače, kterou po sobě nechal starší nástroj
Win32PrioritySeparation rozhoduje o tom, jak dlouho si vlákno udrží procesor a o kolik víc času dostane aplikace v popředí. Hodnoty s dlouhými nebo pevnými kvanty, nebo s podílem popředí pod 3:1, mění to, jak se procesor dělí mezi hru a všechno ostatní; co to dělá s časy snímků, se neměřilo. Výchozí hodnotu Windows vrátí karta Paměť a výchozí nastavení systému na stránce Fix.
9. Overlaye a vrstva pro záznam
Overlaye kreslí uvnitř vlastního snímku hry a nahrávání na pozadí kóduje každý snímek, aby se daly uložit poslední minuty. Zavírej je po jednom a testuj, ne všechny naráz.
10. Zápas, ne počítač
Online hra se může zaseknout všem na serveru naráz. Jestli je obsah pro jednoho hráče na tomtéž počítači čistý a záznam časů snímků ukazuje, že hra zobrazuje normálně, je to opravdu užitečná odpověď: není to tvůj počítač.
Dvě příčiny, pro které má w0a políčko
Příčina 8: „Držet prioritu popředí na správné hodnotě (Win32PrioritySeparation)“ (stránka Optimalizace)
Jedna hodnota DWORD: Win32PrioritySeparation pod HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl.
Referencí Microsoftu k ní je archivovaná stránka napsaná pro Windows 2000; popisuje šest bitů čtených ve třech párech, zapsaných jako AABBCC:
| Pár | Rozhoduje o tom | Hodnoty |
|---|---|---|
| AA (dva nejvyšší bity) | Jak dlouho smí vlákno pokaždé běžet | 01 déle, 10 kratší dobu, 00 nebo 11 vlastní výchozí hodnota edice (kratší na edici pro pracovní stanice) |
| BB (prostřední dva) | Jestli se ta délka mění | 01 proměnná, 10 pevná, 00 nebo 11 výchozí hodnota edice (proměnná na edici pro pracovní stanice) |
| CC (dva nejnižší) | O kolik víc času dostane program v popředí | 00 stejně (a pevně), 01 2:1, 10 nebo 11 3:1. Používá se, jen když prostřední pár znamená proměnnou délku. |
- Výchozí hodnota Windows:
0x2(binárně 000010). Na edici pro pracovní stanice to znamená kratší, proměnná kvanta, přičemž program v popředí dostane trojnásobek času oproti pozadí. Tatáž reference uvádí0x26(100110: kratší, proměnná, 3:1) pro volbu v možnostech výkonu, která upřednostňuje aplikace, a0x18(011000: delší, pevná, stejně) pro volbu, která upřednostňuje služby na pozadí. - Co políčko dělá: nejdřív hodnotu přečte. Hodnota, která už dává popředí podíl 3:1, bez delších kvant a bez pevných kvant, zůstane přesně tak, jak je, a políčko to řekne. Přepíše se jen hodnota, která některou z těch tří podmínek nesplní, a to na
0x26. Na vlastní výchozí hodnotě Windows políčko nezapíše nic: na klientské edici0x2už plánuje tak, jak to0x26žádá. - Kdy se projeví: po restartu. Jádro tuhle hodnotu při startu převede na svou plánovací tabulku, takže její změna v registru na plánovači, který už běží, nic nezmění, a políčko při zápisu o restart požádá.
- Cesta zpět: karta Paměť a výchozí nastavení systému zapíše zpátky
2a požádá o restart. Zároveň obnoví i další výchozí hodnoty paměti a plánovače.
Příčina 9: „Vypnout Xbox Game DVR“ (stránka Optimalizace)
| Hodnota | Políčko zapisuje | Výchozí hodnota Windows (co obnoví opravná karta) |
|---|---|---|
HKCU\System\GameConfigStore, GameDVR_Enabled | 0 | 1 |
HKLM\SOFTWARE\Policies\Microsoft\Windows\GameDVR, AllowGameDVR | 0 | neexistuje |
HKCU\Software\Microsoft\Windows\CurrentVersion\GameDVR, AppCaptureEnabled | 0 | 1 |
HKCU\Software\Microsoft\GameBar, ShowStartupPanel | 0 | neexistuje |
HKCU\Software\Microsoft\GameBar, UseNexusForGameBarEnabled | 0, kromě Ryzenu X3D se dvěma CCD | neexistuje |
Všechny jsou DWORD. Na procesoru X3D se dvěma CCD nechá políčko poslední hodnotu na pokoji: řetězec nahrávání se i tak vypne, ale ta část Game Baru, kterou poslouchá ovladač AMD, zůstane běžet. Je to preventivní opatření, ne prokázaná příčina, a zpráva políčka řekne, kterou cestou šlo. Ryzen X3D, Game Bar a parkování jader vysvětluje, proč na těch čipech na té části záleží.
- Kdy se projeví: w0a u tohoto políčka o restart nežádá.
- Čeho se vzdáváš: nahrávání přes Game Bar. Když se Win+G přestane otevírat nebo chceš nahrávání zpátky, karta Game Bar / záznam hry znovu zapne Game Bar a Game DVR s výchozími hodnotami Windows.
- Co říká sken trhání: jako informaci zaznamená, když je
GameDVR_EnabledneboAppCaptureEnabledpořád zapnuté; na čisté instalaci jsou obě 1, takže jde o výchozí stav, ne o chybu. Čte i třetí hodnotu,HistoricalCaptureEnabled(nahrávání na pozadí), ale jen proto, aby zvolil formulaci; políčko tuhle hodnotu nezapisuje.
Ověř si to sám
Tyhle příkazy jen čtou:
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"
Jak číst odpovědi:
- Hodnoty se vypisují šestnáctkově:
Win32PrioritySeparation REG_DWORD 0x26znamená0x26. 0x2je výchozí hodnota Windows a0x26je volba z reference, která upřednostňuje aplikace; na klientské edici obě plánují stejně.0x18je volba, která upřednostňuje služby na pozadí: delší, pevná kvanta a žádný podíl navíc pro popředí, a právě o tom je příčina 8. Jakoukoli jinou hodnotu zapiš jako šest binárních číslic a přečti ji podle tabulky výše.- U Game DVR znamená
0x0vypnuto (políčko) a0x1zapnuto (výchozí hodnota Windows). - Když dotaz na
AllowGameDVRskončí místo řádku chybou, hodnota zásady neexistuje, a to je výchozí stav Windows.
Co s tím vším dělá sken
Co hledá sken trhání pouští tyhle kontroly proti tomu, co si Windows a tvoje ovladače už zaznamenaly, a každý nález označí jako prokázaný, pravděpodobný, kandidáta nebo neověřený. Dvě věci stojí za to vědět: sken, který vždycky najde deset problémů, ti prodává opravy, a kontrola, která nemohla proběhnout, se počítá, místo aby se potichu brala jako čistá.
Potom změň jednu věc a zaznamenej tutéž scénu znovu. Pět změn a jedno měření ti neřeknou nic o tom, která z nich zabrala, a všechno, co žádným číslem nepohnulo, se má vrátit zpátky.
Věci, které příčinou nejsou
Tohle všechno koluje donekonečna jako oprava trhání a w0a odmítá zapsat každou z těch hodnot, z důvodů, které jsou zaznamenané:
DisablePagingExecutive,LargeSystemCacheaDisablePageCombiningmění správce paměti jádra;NtfsMemoryUsagemění fond ovladače NTFS;IoPageLockLimitaSecondLevelDataCachejsou rovněž předpoklady jádra. Hodnoty na úrovni jádra jsou pravidlo produktu: nikdy se nezapisují.GlobalTimerResolutionRequestsleží podSession Manager\kernel, klíčem, který produkt odmítá úplně.MSISupportedpřepíná režim přerušení zařízení; při špatném nastavení může být výsledkem černá obrazovka.FeatureSettingsOverrideaFeatureSettingsOverrideMaskvypínají ochrany proti Spectre a Meltdown.OverlayTestModeaDisableOverlaysvypínají multi-plane overlay (MPO). Na skutečném stroji s Windows 11 25H2 natvrdo a opakovatelně zmrazily CS2.TdrDelayaTdrDdiDelayprodlužují watchdog grafického ovladače, takže každé zamrznutí jen trvá déle;TdrLevelvypíná obnovu.
Na počítači, kterému paměť nechybí, nezmění čistič paměti nic měřitelného.
Související
- Náhlé propady FPS ve hrách
- Trhání při kompilaci shaderů
- Čtení testu latence
- Co hledá sken trhání
- Vysoké průměrné FPS, ale špatné 1% low
- DPC latence: když je příčinou trhání ovladač
- Jak vrátit zpět, co w0a změnila
Hraješ CS2? Které možnosti spuštění ještě něco dělají a kde v menu obrazu opravdu leží snímky: Nízké FPS, trhání a sekání v CS2: změřený kontrolní seznam
Pomohla ti tahle stránka?
Co chybělo, nebo co nefungovalo? Čteme každou jednu takovou zprávu.
Jestli tahle stránka problém nevyřešila, napiš nám — uveď, který článek jsi četl, a my ten článek opravíme.