Wysoki średni FPS, ale słabe 1% low: co to znaczy

Średnia jest średnią ze wszystkich klatek i dokładnie to ukrywa te klatki, które czujesz — czym jest 1% low, co mówi ci duża różnica między jednym a drugim i skąd wiadomo, czy zmiana naprawdę czymś ruszyła.

Licznik pokazuje 200, a gra sprawia wrażenie 90. Nic nie jest zepsute, nic nie zamarza na całą sekundę, ale walka nigdy nie wypada tak, jak obiecuje ta liczba. To odczucie ma swoją nazwę i swój pomiar, a kiedy potrafisz je odczytać, przestajesz gonić niewłaściwą liczbę.

Najpierw uczciwe zdanie. Ta strona tłumaczy pomiar, a nie naprawę. w0a nigdzie nie wypisuje liczby „zyskane FPS”, więc to, czy zmiana pomogła, odczytujesz z własnych przebiegów przed i po, na tle własnego szumu między przebiegami — a każdą liczbę poniżej da się przeliczyć z pliku, który zapisuje strona Benchmark.

Czym naprawdę są te trzy liczby

Ustaw wszystkie klatki z przebiegu od najwolniejszej do najszybszej.

Czas klatki to te same dane w milisekundach, a tę arytmetykę warto zapamiętać, bo dzięki niej reszta tej strony robi się konkretna: 16,7 ms to 60 FPS, 6,9 ms to 144, 4,2 ms to 240.

Przebieg ze średnią 200 i 1% low równym 70 to więc przebieg, w którym typowa klatka trwała około 5 ms, a najgorsza setna około 14 — prawie trzy razy dłużej. A przy 200 FPS jeden procent twoich klatek to dwie klatki na sekundę. Dwa razy na sekundę obraz stoi w miejscu przez czas trzech klatek. To właśnie czujesz, i żadna ilość średniej ci o tym nie powie.

Czytaj różnicę, nie samą liczbę

1% low równe 70 jest znakomite w przebiegu na 90 FPS i niepokojące w przebiegu na 200. Użytecznym odczytem jest relacja między nimi:

Co widziszCo to zwykle znaczy
Średnia i 1% low blisko siebieRówne dostarczanie klatek. To właśnie jest „płynność”, nawet przy skromnej liczbie klatek.
1% low daleko poniżej średniejCoś przerywa skądinąd zdrowy przebieg — zdarzenie, a nie obciążenie.
0,1% low daleko poniżej 1% lowRzadkie, głębokie zdarzenia: reset sterownika, burza stronicowania, długi odczyt z dysku.
Wszystko nisko narazPo prostu prosisz o więcej, niż sprzęt dostarcza. Obniż jakieś ustawienie.

Ten trzeci wiersz łatwo źle odczytać. Jeśli twoje 1% low jest w porządku, a 0,1% low fatalne, nie masz problemu z równomiernością — masz garść konkretnych zdarzeń, a zdarzenia da się znaleźć.

Dlaczego zły ogon to inny problem niż niska średnia

Niska średnia to pytanie o obciążenie: maszyna robi tyle, ile potrafi, i to za mało. Odpowiedzią jest ustawienie, rozdzielczość albo inny sprzęt.

Zły ogon to pytanie o zdarzenie: maszyna w większości nadąża, a coś ją okresowo zatrzymuje. Odpowiedzią jest znalezienie tej rzeczy. Lista jest krótka i każda pozycja zostawia ślad — sterownik trzymający rdzeń procesora, strony wracające z dysku, odczyt zasobu, zadanie w tle, kompilowany shader, reset sterownika. Dlaczego gry przycinają na Windows 11 przechodzi tę listę przyczyna po przyczynie, a czego szuka skan przycięć to jej wersja automatyczna — oznacza każde znalezisko jako udowodnione, prawdopodobne, kandydata albo niesprawdzone, zamiast wręczać ci wskaźnik pewności, na który sobie nie zapracowała.

Jest też przypadek pośredni: maszyna, która średnio nie jest ograniczona przez kartę graficzną, ale w najbardziej zajętych chwilach uderza w limit. Klatki, które zostają w tyle, to dokładnie te klatki, w których dzieje się najwięcej — czyli walka. Jeśli twoja karta graficzna siedzi wyraźnie poniżej pełnego obłożenia, a lowy cierpią, stroną diagnostyczną jest GPU nie na 100%.

Dyscyplina pomiaru, bez której nic z tego nie ma sensu

Percentyle są bardziej szumne niż średnie, bo liczy się je z mniejszej liczby klatek. Dwa przebiegi tej samej, niezmienionej konfiguracji nie dadzą tego samego 1% low, a różnica między nimi to najmniejsza zmiana, jaką w ogóle jesteś w stanie wykryć.

Dlatego pomiar jest użyteczny tylko obok własnego szumu. Strona Benchmark przed / po wylicza szum pomiarowy z rozrzutu każdego przebiegu minuta po minucie i wypisuje go osobno dla średniej, dla 1% low i dla 0,1% low — i nie ogłosi różnicy, która mieści się w jego środku. To cała dyscyplina zamknięta w jednym zachowaniu: wynik mniejszy niż twoje własne wahanie między przebiegami nie jest wynikiem.

W wersji praktycznej:

  1. Ta sama gra, ta sama mapa albo powtórka, ta sama długość, te same ustawienia w grze.
  2. Graj tak samo. Przebieg spędzony na patrzeniu w ścianę i przebieg spędzony w wymianie ognia nie są porównywalne.
  3. Zmierz niezmienioną konfigurację co najmniej trzy razy, zanim cokolwiek zmienisz, żebyś wiedział, jak wygląda twój własny szum.
  4. Zmień jedną rzecz. Pięć zmian i jeden pomiar nie mówią nic o tym, która z nich miała znaczenie — a dodanie do siebie pięciu osobno zmierzonych zysków to arytmetyka, a nie pomiar.
  5. Porównaj lowy. Jak czytać wynik benchmarku omawia, do czego służy każda liczba na tej stronie.

Dokładna arytmetyka, liczba po liczbie

Oto, co strona Benchmark robi z przebiegiem, w kolejności, w jakiej to robi.

KrokRegułaPo co jest
Które klatki się licząTylko klatki narysowane, gdy gra była oknem na pierwszym planie. Po powrocie gry na pierwszy plan pierwsza sekunda jest pomijana; przed wykrytą utratą fokusu pomijane jest ostatnie 0,2 sekundy. Pominięty czas jest podawany razem z przebiegiem.Zapis startuje i zatrzymuje się z własnego okna w0a, więc jego brzegi to gra w tle. W jednym zapisanym przebiegu 94 ze 185 klatek stojących za 1% low były właśnie tymi brzegami. Jedna sekunda to wartość wybrana, a nie zmierzona.
ZatrzymaniaOdstęp między klatkami dłuższy niż 200 ms jest wyłączany ze średniej i z każdego percentyla i liczony osobno.Powyżej 200 ms to ekran ładowania, alt-tab albo zatrzymanie sterownika, a nie renderowanie. Wliczony do średniej pogrzebałby każdą prawdziwą klatkę.
Średni FPSLiczone klatki podzielone przez czas, jaki zajęły: klatki × 1000 ÷ łączna liczba milisekund.
1% lowPosortuj liczone czasy klatek. Weź najwolniejszy 1% z nich, zaokrąglając w górę i nigdy mniej niż jedną klatkę, uśrednij te czasy klatek i zamień wynik na FPS: 1000 ÷ ta średnia.Inną popularną definicję, liczbę klatek przy czasie klatki z 99. percentyla, odrzucono celowo: gdy przycina dokładnie 1% klatek, wypada ona na granicy i podaje prawie tę samą liczbę co średnia.
0,1% lowTo samo, z najwolniejszymi 0,1%.
Czas klatki z 99. i 99,9. percentylaPodawany osobno, w milisekundach.Dla czytelników i narzędzi, które używają definicji percentylowej.
Za krótko, żeby czytaćPoniżej 900 klatek jest ich za mało, żeby percentyl cokolwiek znaczył.
Liczba przycięćKlatka jest przycięciem, gdy jest dłuższa zarówno od dwukrotności mediany otaczających ją trzech sekund, jak i od tej mediany plus 8 ms, do jednej sekundy.Trzy sekundy zamiast stałej liczby klatek, żeby reguła znaczyła to samo przy 60 FPS i przy 300. Składnik 8 ms nie pozwala, żeby zwykłe drgania przy wysokiej liczbie klatek liczyły się jako przycięcia. Klatki od 200 ms do jednej sekundy są wyłączone z percentyli, ale tu się liczą: 250-milisekundowa czkawka od kompilacji shaderów to dokładnie to, do czego łapania ta liczba istnieje.
Szum pomiarowyPrzebieg jest cięty na bloki po 60 sekund. Każda strona porównania potrzebuje co najmniej dwóch pełnych bloków, inaczej strona pisze „nieporównywalne” zamiast kolorować liczbę. Poziom szumu to 95-procentowy przedział z rozrzutu obu stron między blokami (metoda Welcha), jako procent wartości „przed”. Liczą się tylko pełne bloki bez utraconych zdarzeń, a poziom szumu równy zeru nigdy nie powstaje.Różnica mieszcząca się w twoim własnym wahaniu między blokami nie jest wynikiem.
Serie parowaneGdy uruchamiasz serię A/B, zmiana jest zgłaszana tylko wtedy, gdy dokładny test rangowanych znaków i 95-procentowy przedział bootstrapowy mediany różnic (10 000 powtórnych prób) oba wykluczają zero, a mediana jest co najmniej tak duża jak najmniejszy efekt, który według pilotażu z 10 przebiegów ta konfiguracja potrafi wykryć. Seria potrzebuje co najmniej 6 par — przy 5 najmniejsza możliwa wartość p wynosi 0,0625 — a zalecane jest 8, w kolejności ABBA.Jedna para przed i po nie oddzieli zmiany od rozgrzanej karty graficznej albo innego miejsca odrodzenia.

Sprawdź sam: przelicz z CSV

Zapisz CSV na stronie Benchmark zapisuje jedną tabelę z kolumnami side,kind,name,value. Wiersze z kind = metric to liczby podsumowania; wiersze z kind = frame to odstępy między klatkami, jeden na wiersz, z czasem klatki w milisekundach w value. Wiersze klatek przechowują całą serię, razem z zatrzymaniami, właśnie po to, żebyś mógł sam zastosować regułę 200 ms i dojść do tych samych liczb.

Dwie rzeczy, zanim zaczniesz:

W arkuszu kalkulacyjnym: przefiltruj jedną wartość side i kind = frame, usuń wiersze powyżej 200, posortuj value od największej do najmniejszej, uśrednij pierwsze N wierszy, gdzie N to liczba wierszy podzielona przez 100 i zaokrąglona w górę, i podziel 1000 przez tę średnią. Wynik powinien być równy low_1pct_fps dla tej strony.

W PowerShell (dla drugiej strony zamień before na after):

$ms = Import-Csv .\capture.csv |
  Where-Object { $_.kind -eq 'frame' -and $_.side -eq 'before' } |
  ForEach-Object { [double]::Parse($_.value, [Globalization.CultureInfo]::InvariantCulture) } |
  Where-Object { $_ -le 200 } |
  Sort-Object
$take = [Math]::Max(1, [Math]::Ceiling($ms.Count * 0.01))
1000 / ($ms | Select-Object -Last $take | Measure-Object -Average).Average

Dla 0,1% low użyj 0.001 zamiast 0.01. Dwa szybkie sprawdzenia spójności z tego samego pliku: liczba wierszy klatek z wartością 200 lub mniejszą jest równa metryce frames, a liczba wierszy powyżej 200 — metryce excluded_over_stall_ms.

Dwie rzeczy, które po cichu psują percentyl

Generowanie klatek. Wstawione klatki nie niosą nowego stanu gry. 1% low policzone ze zliczania klatek dalej daje jakąś liczbę, ale przestało opisywać to, jak szybko gra odpowiada na twoje ruchy — a to jedyny powód, dla którego w ogóle na nie patrzyłeś. Na czas pomiaru wyłącz generowanie. To uwaga o definicji, a nie twierdzenie, że generowanie klatek powoduje przycięcia.

Ekrany ładowania i pauzy. Trzysekundowe zatrzymanie na ładowaniu to pojedynczy „odstęp między klatkami” o długości trzech tysięcy milisekund, a zostawiony w danych staje się twoim 0,1% low i grzebie wszystko, co prawdziwe. Właśnie dlatego tak długie odstępy są wyłączane z percentyli i raportowane osobno, żeby żadna liczba nie została po cichu zbudowana na jednym z nich.

Co nie rusza 1% low

To trzeba powiedzieć wprost, bo łatwo pomylić te dwie rzeczy: funkcje od opóźnienia i stabilność percentyli to dwa różne twierdzenia. Tryby niskiego opóźnienia od producentów zmniejszają głębokość kolejki renderowania i to zmniejszenie zostało zmierzone. Nie ma opublikowanego pomiaru pokazującego, że poprawiają percentyle czasu klatki. Obie rzeczy mogą być warte posiadania; nie są tym samym, a strona, która przedstawia jedną jako drugą, coś ci sprzedaje. Czysta instalacja dla stabilnych 1% low przechodzi przez opublikowane dowody ze źródłami, a Opóźnienie wejścia, którego nie naprawi żaden program to uczciwe rozliczenie tego, dokąd praca nad opóźnieniem sięga, a dokąd nie.

Ta sama ostrożność dotyczy list wpisów do rejestru obiecujących lepsze lowy. Wartości zarządzania pamięcią jądra i wymuszanie rozdzielczości timera są tutaj odrzucane wprost — nie dlatego, że są egzotyczne, tylko dlatego, że nikt nie opublikował ich pomiaru, który przetrwałby zetknięcie z metodą.

Czego strona Benchmark nie wypisuje

Jeśli twoje lowy są słabe i chcesz przyczyn, a nie liczb, listą jest Dlaczego gry przycinają na Windows 11, a to, co w0a sprawdza automatycznie, opisuje Czego szuka skan przycięć. Dla samego CS2 Niskie FPS i przycięcia w CS2 stosuje to wszystko do jednej gry.

Powiązane

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

w0a nie zmienia żadnego ustawienia Windows, dopóki o to nie poprosisz, a tweak zapamiętuje starą wartość, zanim zapisze nową. Powiadom mnie

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ł.