Od wielu, wielu lat w dziedzinie testów kart graficznych króluje tak naprawdę jedno narzędzie, program FRAPS. Co zabawne, mając na uwadze pędzący lawinowo postęp technologiczny, w branży komputerowej, jest to rozwiązanie pamiętające jeszcze erę procesorów 32-bitowych. Tak, mam na myśli Athlona XP i inne tego typu prehistoryki. Wprawdzie rzeczony FRAPS aż do roku 2013 rozwijany był dość regularnie, przez co dorobił się chociażby obsługi środowisk programistycznych DirectX 10 oraz 11, ale dzisiaj, w erze DirectX 12 i Vulkana, to już ewidentny zabytek, który nie radzi sobie z pomiarem wydajności w najświeższych produkcjach. Mimo to, wielu testerów z uporem godnym maniaka stosuje FRAPS-a, jako podstawowego narzędzia w swej procedurze. Powód? Za jedyną alternatywę uważa się aplikację NVIDIA FCAT, wymagającą drogiego rejestratora wideo. Ale brak możliwości czysto programowego pomiaru w DX 12 czy Vulkanie to tylko jeden z mitów. Mało tego, korzystając ze starszych gier, również można przeprowadzić pomiary dokładniej i według nowocześniejszych standardów. Pozwólcie, pokrótce wytłumaczę wam jak i dlaczego.
Technicznie rzecz biorąc, FRAPS wykonuje pomiar ilości danych o ramkach, trafiających do bibliotek środowiska programistycznego, z silnika gry. W późniejszych etapach dane te muszą zostać jeszcze przetłumaczone przez sterownik, na rozkazy zrozumiałe przez procesor graficzny, a następnie zamienione w widoczny na ekranie obraz. Rozwiązanie to ma dwie istotne wady. Po pierwsze, sterownik może pominąć część danych binarnych przy translacji, co skutkuje mniejszą liczbą klatek, niż wskazuje FRAPS, a po drugie - tester zostaje przywiązany tylko do tych środowisk programistycznych, które aplikacja wspiera. Dla przypomnienia, są to maksymalnie DirectX 11 oraz OpenGL 4.5. Tymczasem system Windows oferuje bardzo przydatną funkcję śledzenia zdarzeń (ang. Event Tracing for Windows - ETW). Odpowiednio z niej korzystając, programista może zliczać dane na wyjściu ze sterownika, przekazywane do karty graficznej, obchodząc obydwa wspomniane powyżej problemy. Dostrzegli to ludzie z Intela, czego owocem stał się program PresentMon, opublikowany po raz pierwszy bodaj w 2016 roku. Początki jednak nigdy nie należą do łatwych. I tak też było w tym przypadku.
Ciekawostka: FCAT, dzięki pracy na materiale wideo, wykonuje pomiar na końcu toru obrazu, a więc na wyjściu z karty graficznej. Niemniej w tym porównaniu przekreśla go jedno, mianowicie cena wymaganego rejestratora, dochodząca nierzadko do 10 tys. złotych.
PresentMon okazał się narzędziem niezwykle prostym, w formie - bo nie obsłudze. Nie dość, że aplikację pozbawiono interfejsu graficznego, to jeszcze bezpośrednio zwracała ona tylko surowe dane z ETW, wśród których brakowało (i dalej brakuje) informacji o minimalnej czy średniej liczbie klatek. Były za to podawane przedziały czasowe dla kolejnych klatek (ang. frame time), z których końcowe wartości można dopiero wyliczyć. Przyznajcie jednak, że nie jest to najwygodniejsze podejście. Dlatego też PresentMon wymagał istotnych modyfikacji. Z pomocą przyszła firma AMD, która, wykorzystując podstawowe założenia Intela, zbudowała narzędzie OCAT. I to właśnie o nim tu mowa. Dzieło Czerwonych to tak naprawdę PresentMon, tyle tylko, że rozbudowany o przyjazny interfejs i nakładkę ekranową, umożliwiającą monitorowanie klatkażu podczas gry, a dodatkowo zwracający już gotowy do publikacji pomiar. Innymi słowy: taki nowoczesny odpowiednik FRAPS-a. Ale na tym nie koniec. Jakby tego było mało, OCAT ma funkcję pomiaru tzw. 99. percentylu, czyli wartości klatek, poniżej której nie zanotujemy spadków przez 99% czasu rozgrywki.
Jakie to ma znaczenie, zapytacie? Ano, czasem minimalna liczba klatek, zwłaszcza przy dłuższych przebiegach testowych jest bardzo myląca. Jeden spadek do bardzo niskiej wartości, chociażby przy doczytywaniu danych z dysku, może kompletnie zaburzyć analizę testu i wnioski z niego płynące. Badając 99. percentyl, zyskujemy lepszy pogląd na faktyczne wahania wydajności podczas rozgrywki, nie potencjalnie jednostkową sytuację. A jako iż OCAT jest niezależny od środowiska programistycznego, o czym już zdążyłem napomknąć, możemy nim przetestować wydajność w dosłownie każdej grze, na Windows, uwzględniając produkcje zakupione w oficjalnym sklepiku Microsoftu, działające w trybie UWP. Wyniki zapisywane są w plikach o rozszerzeniu *.csv, a więc, raz jeszcze, analogicznie do FRAPS-a. Po co zatem kurczowo trzymać się starych rozwiązań, skoro istnieją nowe i lepsze? Cóż, w tym momencie na to pytanie każdy powinien odpowiedzieć sobie sam, we własnym zakresie. Odpowiedź, mam nadzieję, jest jasna. Aha, oprogramowanie możecie pobrać stąd.
Pokaż / Dodaj komentarze do: FRAPS to zabytek, a FCAT - drożyzna. Pomiar wydajności w DX 12 / Vulkan