Twój licznik pokazuje 160. Gra i tak szarpie — ułamek sekundy, w którym obraz staje, twój celownik ląduje gdzieś, gdzie go nie postawiłeś, a potem wszystko znowu jest w porządku. Licznik ani drgnął, i dlatego nic, co robisz, żeby go podnieść, nie pomaga.
Ta rozbieżność to cały temat tej strony. Przycięcie to klatka, która przyszła spóźniona, a nie niska liczba klatek. Licznik klatek uśrednia po sekundzie, więc jedna klatka, która trwała 90 ms, znika w 159 krótkich obok niej. Liczbą, która opisuje to, co poczułeś, jest czas klatki, a przycięcie to klatka dużo wolniejsza od swoich sąsiadek.
Najpierw uczciwe zdanie. Dwie z dziesięciu przyczyn poniżej odpowiadają jednemu polu w w0a: wartość harmonogramu w przyczynie 8 i nagrywanie gry w tle w przyczynie 9. Oba pola tylko ustawiają wartość tam, gdzie jej miejsce, a na maszynie, której nikt nie stroił, pierwsze nie znajduje nic do zmiany. Czy przycięcie, które czujesz, było jednym z nich, powie ci tylko zapis przed i po.
Najpierw ustal, który z trzech problemów masz
Nazywa się je tym samym słowem, a nie mają ze sobą prawie nic wspólnego.
- Szarpnięcia. Linia bazowa jest w porządku, a co jakiś czas dzieje się coś długiego. To jest ta strona.
- Chropowata linia bazowa. Nic dramatycznego, ale gra nigdy nie wydaje się płynna. To problem percentyli: Wysoki średni FPS, ale słabe 1% low.
- Spadek. Liczba klatek spada i zostaje na dole przez sekundy albo minuty. Zupełnie inne przyczyny: Nagłe spadki FPS w grach.
Zdobądź zapis, zanim cokolwiek zmienisz
To zgadywanie sprawia, że zajmuje to tygodnie. Nagranie gry, w którą naprawdę grasz, w miejscu, w którym naprawdę się przycina, zamienia „co to może być” w „co się stało przy tym skoku” — i jest tym „przed”, względem którego ocenia się każdą późniejszą zmianę. Jak czytać wynik benchmarku mówi jak.
Przyczyny, jedna po drugiej
1. Sterownik trzymający rdzeń procesora
Kiedy sterownik jest w przerwaniu albo w wywołaniu odroczonym (DPC), ten rdzeń działa ponad każdym istniejącym priorytetem wątku: nic nie rysuje i nie czyta wejścia, dopóki sterownik nie puści. Tę przyczynę łatwo przeoczyć: nie pojawia się na żadnym wykresie czasu klatki ani w żadnym menedżerze zadań.
Jak to sprawdzisz: zmierz to. Sekcja jądra w Jak czytać test opóźnień wypisuje każdy sterownik, który trzymał rdzeń, według najdłuższego zatrzymania i z nazwą pliku. Powyżej mniej więcej 1 ms sterownik wypiera raporty z urządzeń wejściowych; od 4 ms w górę maszyna nie utrzyma stabilnego czasu klatki, cokolwiek innego zmienisz.
Co robisz: zaktualizuj ten jeden sterownik od producenta sprzętu — nie cały system, tylko nazwany plik. Sterowniki sieciowe, pamięci masowej i audio należą do sterowników, które mogą to robić.
2. Kompilujące się shadery
Nowy efekt, nowy obszar, nowa broń — i gra musi skompilować shader, zanim zdoła go narysować. Kompilacja odbywa się na procesorze, a klatka czeka.
Jak to sprawdzisz: jest najgorsze w pierwszych minutach sesji albo mapy, mija w miarę grania i wraca po aktualizacji sterownika albo gry. Jeśli twoje przycięcia nie mijają, to nie to — Przycięcia od kompilacji shaderów to wersja długa.
Co robisz: przegraj to i nie rób w tym oknie benchmarku; mierzyłbyś kompilator.
3. Dysk, z którego gra strumieniuje dane
Gra dociągająca zasoby w trakcie twojego ruchu przycina się, kiedy odczyt jest wolny, a klatka czekająca na te dane jest tą spóźnioną.
Jak to sprawdzisz: szarpnięcia pokrywają się z wejściem w nowy obszar, a długie odstępy między klatkami wpadają w to samo okno co aktywność dysku. Sprawdź rzeczy oczywiste: czy gra leży na dysku mechanicznym, czy dysk jest prawie pełny, czy folder gry siedzi w folderze synchronizowanym z chmurą, który wysyła każdy zapis, czy plik stronicowania leży na talerzowym dysku. SSD dla gry strumieniującej dane to nie tweak, to odpowiedź.
4. Presja na pamięć
Kiedy RAM się zapełnia, Windows wypycha strony na dysk, a strony wracające z powrotem czuć jako szarpnięcia. Mniej oczywisty przypadek to limit zatwierdzeń (commit): kiedy łączna pamięć, jaką Windows może rozdać, zaczyna się kończyć, menedżer pamięci odcina strony programom, które wciąż działają, a gra czuje te cięcia jako zamrożenia poniżej sekundy. Oba poprawiają się w chwili, w której zamkniesz przeglądarkę z czterdziestoma kartami.
5. Coś innego działa
Proces roboczy Windows Update, zadanie konserwacyjne, zaplanowane skanowanie w poszukiwaniu złośliwego oprogramowania, eksport wideo, o którym zapomniałeś. Ta praca nie zatrzymuje się, kiedy startuje gra; ustawia się w kolejce po ten sam rdzeń co wątek renderujący, więc wychodzi jako skoki czasu klatki, a nie jako niższa średnia. Przeczekanie tego jest uzasadnioną naprawą.
Jak to sprawdzisz: pomiar w benchmarku zachowuje najdłuższe przedziały między klatkami razem z operacjami dyskowymi i twardymi błędami stron, które wypadły w tym samym oknie. Jeśli były to procesy konserwacji lub antywirusa Windows, karta długich przedziałów liczy te przedziały i podaje nazwy procesów. To jest to, co wypadło razem, a nie dowód, że ta praca opóźniła klatkę: antywirus czyta wszystko, co otwiera dowolny program.
6. Ciepło i limity mocy
Kiedy układ uderza w swoją granicę temperatury albo mocy, taktowanie jest wielokrotnie ściągane w dół i podnoszone z powrotem, a falujące czasy klatek to właśnie to widziane od środka. Decyzję podejmuje samo firmware, nie pytając Windows. Zaczyna się po jakimś czasie, a nie od razu, i podąża za tym, jak ciepło jest w pokoju.
7. Ekran
Monitor chodzący poniżej częstotliwości odświeżania, którą obsługuje, podkłada pod równomierność twoich klatek podłogę, której sprzęt wcale nie wymaga. Sprawdź rzeczywistą wartość, zamiast zakładać; na zaskakująco wielu maszynach jest zła po świeżej instalacji albo po wymianie kabla.
8. Wartość harmonogramu zostawiona przez starsze narzędzie
Win32PrioritySeparation decyduje, jak długo wątek trzyma procesor i ile więcej czasu dostaje aplikacja pierwszego planu. Wartości z długimi albo stałymi kwantami albo z udziałem pierwszego planu poniżej 3:1 zmieniają to, jak procesor jest dzielony między grę i całą resztę; nie zmierzono, co to robi z czasem klatki. Karta Pamięć i domyślne ustawienia systemu na stronie Fix zapisuje z powrotem wartość domyślną Windows.
9. Nakładki i warstwa przechwytywania
Nakładki rysują się wewnątrz własnej klatki gry, a nagrywanie w tle koduje każdą klatkę, żeby dało się zapisać ostatnie kilka minut. Zamykaj je po jednej i testuj, zamiast wszystkich naraz.
10. Mecz, a nie maszyna
Gra sieciowa potrafi szarpać dla wszystkich na serwerze naraz. Jeśli treść dla jednego gracza na tej samej maszynie jest czysta, a zapis czasów klatek pokazuje, że gra prezentuje obraz normalnie, to naprawdę użyteczna odpowiedź: to nie twój komputer.
Dwie przyczyny, dla których w0a ma pole
Przyczyna 8: „Utrzymuj priorytet pierwszego planu na właściwej wartości (Win32PrioritySeparation)” (strona Optymalizacje)
Jedna wartość DWORD: Win32PrioritySeparation w HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl.
Dokumentacja Microsoftu na jej temat to zarchiwizowana strona napisana dla Windows 2000; opisuje sześć bitów czytanych w trzech parach, zapisywanych jako AABBCC:
| Para | O czym decyduje | Wartości |
|---|---|---|
| AA (dwa najwyższe bity) | Jak długo wątek może działać za każdym razem | 01 dłużej, 10 krócej, 00 lub 11 własna wartość domyślna edycji (krócej w edycji dla stacji roboczych) |
| BB (dwa środkowe) | Czy ta długość się zmienia | 01 zmienna, 10 stała, 00 lub 11 wartość domyślna edycji (zmienna w edycji dla stacji roboczych) |
| CC (dwa najniższe) | Ile więcej czasu dostaje program na pierwszym planie | 00 po równo (i stale), 01 2:1, 10 lub 11 3:1. Używane tylko wtedy, gdy środkowa para oznacza „zmienna”. |
- Wartość domyślna Windows:
0x2(binarnie 000010). W edycji dla stacji roboczych oznacza to krótsze, zmienne kwanty, przy czym program na pierwszym planie dostaje trzy razy więcej czasu niż tło. Ta sama dokumentacja podaje0x26(100110: krócej, zmiennie, 3:1) dla wyboru w opcjach wydajności, który faworyzuje programy, i0x18(011000: dłużej, stale, po równo) dla tego, który faworyzuje usługi w tle. - Co robi pole: najpierw czyta wartość. Wartość, która już daje pierwszemu planowi udział 3:1, bez dłuższych kwantów i bez stałych kwantów, zostaje dokładnie taka, jaka jest, i pole o tym mówi. Przepisywana, na
0x26, jest tylko wartość, która nie spełnia jednego z tych trzech warunków. Na własnej wartości domyślnej Windows pole nic nie zapisuje: w edycji klienckiej0x2już planuje tak, jak prosi o to0x26. - Kiedy zaczyna działać: po ponownym uruchomieniu. Jądro zamienia tę wartość w swoją tabelę planowania przy starcie, więc zmiana w rejestrze nie zmienia niczego w harmonogramie, który już działa, a pole, gdy zapisuje, prosi o ponowne uruchomienie.
- Droga powrotu: karta Pamięć i domyślne ustawienia systemu zapisuje z powrotem
2i prosi o ponowne uruchomienie. Przy okazji przywraca też inne domyślne wartości pamięci i harmonogramu.
Przyczyna 9: „Wyłącz Xbox Game DVR” (strona Optymalizacje)
| Wartość | Co zapisuje pole | Wartość domyślna Windows (tę przywraca karta naprawcza) |
|---|---|---|
HKCU\System\GameConfigStore, GameDVR_Enabled | 0 | 1 |
HKLM\SOFTWARE\Policies\Microsoft\Windows\GameDVR, AllowGameDVR | 0 | brak |
HKCU\Software\Microsoft\Windows\CurrentVersion\GameDVR, AppCaptureEnabled | 0 | 1 |
HKCU\Software\Microsoft\GameBar, ShowStartupPanel | 0 | brak |
HKCU\Software\Microsoft\GameBar, UseNexusForGameBarEnabled | 0, z wyjątkiem Ryzen X3D z dwoma CCD | brak |
Wszystkie to DWORD. Na procesorze X3D z dwoma CCD pole zostawia ostatnią wartość w spokoju: potok nagrywania i tak zostaje wyłączony, ale część Game Bar, której nasłuchuje sterownik AMD, dalej działa. To środek ostrożności, a nie udowodniona przyczyna, a komunikat pola mówi, którą drogą poszło. Ryzen X3D, Game Bar i parkowanie rdzeni wyjaśnia, dlaczego ta część ma znaczenie na tych układach.
- Kiedy zaczyna działać: przy tym polu w0a nie prosi o ponowne uruchomienie.
- Z czego rezygnujesz: z nagrywania Game Bar. Jeśli Win+G przestaje się otwierać albo chcesz odzyskać nagrywanie, karta Game Bar / nagrywanie gier włącza z powrotem Game Bar i Game DVR z wartościami domyślnymi Windows.
- Co mówi skan przycięć: odnotowuje jako informację, gdy
GameDVR_EnabledalboAppCaptureEnabledjest wciąż włączone; w czystej instalacji obie wynoszą 1, więc to wartość domyślna, a nie usterka. Czyta też trzecią wartość,HistoricalCaptureEnabled(nagrywanie w tle), ale tylko po to, żeby dobrać sformułowanie; pole tej wartości nie zapisuje.
Sprawdź sam
Te polecenia tylko czytają:
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 czytać odpowiedzi:
- Wartości są wypisywane szesnastkowo:
Win32PrioritySeparation REG_DWORD 0x26oznacza0x26. 0x2to wartość domyślna Windows, a0x26to ustawienie z dokumentacji faworyzujące programy; w edycji klienckiej oba planują tak samo.0x18to ustawienie faworyzujące usługi w tle: dłuższe, stałe kwanty i żadnego udziału dla pierwszego planu — właśnie o tym jest przyczyna 8. Każdą inną wartość zapisz jako sześć cyfr binarnych i odczytaj z tabeli powyżej.- Dla Game DVR
0x0oznacza wyłączone (pole), a0x1włączone (wartość domyślna Windows). - Jeśli zapytanie o
AllowGameDVRkończy się błędem zamiast wiersza, wartość zasady nie istnieje, a to jest wartość domyślna Windows.
Co skan robi z tym wszystkim
Czego szuka skan przycięć przepuszcza te kontrole przez to, co Windows i twoje sterowniki i tak już zapisały, i oznacza każde znalezisko jako udowodnione, prawdopodobne, kandydata albo niesprawdzone. Dwie rzeczy warte wiedzy: skan, który zawsze znajduje dziesięć problemów, sprzedaje ci naprawy, a kontrola, która nie mogła się wykonać, jest liczona, a nie po cichu traktowana jako czysta.
Potem zmień jedną rzecz i nagraj tę samą scenę jeszcze raz. Pięć zmian i jeden pomiar nie mówią nic o tym, która z nich miała znaczenie, a wszystko, co nie ruszyło żadnej liczby, powinno zostać cofnięte.
Rzeczy, które nie są przyczyną
Wszystko to krąży bez końca jako naprawy przycięć, a w0a odmawia zapisania każdej z tych wartości, z udokumentowanych powodów:
DisablePagingExecutive,LargeSystemCacheiDisablePageCombiningzmieniają menedżera pamięci jądra;NtfsMemoryUsagezmienia pulę sterownika NTFS;IoPageLockLimitiSecondLevelDataCacheto też założenia jądra. Wartości na poziomie jądra to reguła produktu: nigdy nie są zapisywane.GlobalTimerResolutionRequestsżyje wSession Manager\kernel, kluczu, który produkt odrzuca w całości.MSISupportedprzełącza tryb przerwań urządzenia; ustawiony źle, może skończyć się czarnym ekranem.FeatureSettingsOverrideiFeatureSettingsOverrideMaskwyłączają zabezpieczenia przed Spectre i Meltdown.OverlayTestModeiDisableOverlayswyłączają nakładanie wielopłaszczyznowe (MPO). Na prawdziwej maszynie z Windows 11 25H2 zamrażały CS2 całkowicie i powtarzalnie.TdrDelayiTdrDdiDelaywydłużają watchdog sterownika grafiki, przez co każde zawieszenie trwa tylko dłużej;TdrLevelwyłącza odzyskiwanie.
Na maszynie, której nie brakuje pamięci, czyszczenie pamięci nie zmienia niczego mierzalnego.
Powiązane
- Nagłe spadki FPS w grach
- Przycięcia od kompilacji shaderów
- Jak czytać test opóźnień
- Czego szuka skan przycięć
- Wysoki średni FPS, ale słabe 1% low
- Opóźnienia DPC: kiedy to sterownik jest tym, co przycina
- Cofanie zmian wprowadzonych przez w0a
Grasz w CS2? Które opcje uruchamiania jeszcze coś robią i gdzie w menu wideo naprawdę leżą klatki: Mało FPS, spadki FPS i przycięcia w CS2: zmierzona lista kontrolna
Czy ta strona pomogła?
Czego zabrakło albo co nie zadziałało? Czytamy każdą taką wiadomość.
Jeśli ta strona nie rozwiązała problemu, napisz do nas — podaj, który artykuł czytasz, a poprawimy ten artykuł.