Oszacowanie czasu przetwarzania klatek przez procesor i procesor graficzny (czas renderowania) jest niezbędne do zrozumienia wydajności aplikacji i znalezienia wąskich gardeł. Gdy profilujesz aplikację za pomocą AGI, narzędzie System Profiler udostępnia dane śledzenia, których możesz użyć do oszacowania czasu wyświetlania klatek.
Czasy procesora
W AIGI możesz wyświetlić łączny i aktywny czas procesora na klatkę na ścieżce procesora w profilu systemu.
Łączny czas pracy procesora
Aby zmierzyć łączny czas procesora, wybierz zakres czasu, który obejmuje czas między kolejnymi zdarzeniami przesyłania klatek. Zdarzenia przesyłania klatek to eglSwapBuffers
(w przypadku OpenGL) i vkQueuePresentKHR
(w przypadku Vulkan).

eglSwapBuffer
.
vkQueuePresentKHR
.Ten pomiar to szacowany łączny czas pracy procesora,ale niekoniecznie jest to czas aktywnej pracy procesora. Na przykład w przypadku aplikacji korzystających z GPU procesor może czekać na GPU, aż wykona ono swoje zadanie, zanim prześle nową klatkę. Często zdarza się to, gdy zdarzenie dequeueBuffer
, eglSwapBuffer
(w przypadku OpenGL) lub vkQueuePresent
(w przypadku Vulkan) zajmuje dużą część czasu procesora.
Czas oczekiwania jest uwzględniany w łącznym czasie pracy procesora, ale nie w aktywnej pracy procesora.

dequeueBuffer
i eglSwapBuffer
.
Aktywny czas pracy procesora
Aktywny czas procesora określa, kiedy procesor wykonuje kod aplikacji bez bycia w stanie bezczynności.
Aby zmierzyć aktywny czas procesora, wyświetl wycinki W trakcie wykonywania tuż nad zdarzeniami procesora. Zlicz wszystkie fragmenty śladu między 2 zdarzeniami przesyłania ramek, które mają stan W trakcie wykonywania. Pamiętaj, aby dołączyć działające wątki.


Innym sposobem pomiaru aktywnego czasu procesora jest wyświetlanie fragmentów aplikacji w śladach procesora. Te słupki wskazują, kiedy działa procesor i odpowiadają słupkom Uruchomiony.

Aby ułatwić identyfikację fragmentów aplikacji, możesz dodać do niej znaczniki ATrace. Dzięki temu będą się one wyświetlać na ścieżce CPU w profilu systemowym.

Szacowanie czasu renderowania klatek przez GPU
Aby oszacować czasy generowania klatek przez GPU, możesz użyć w profilu systemu fragmentów GPU lub liczników GPU. Szacowanie jest dokładniejsze, gdy używasz segmentów GPU.
Segmenty GPU
Jeśli w profilu systemu są dostępne informacje o układzie GPU, możesz uzyskać bardzo dokładne informacje o czasie renderowania klatki przez GPU, mierząc łączny czas, jaki aplikacja poświęca na wykonywanie zadań związanych z pojedynczą klatką.
Urządzenia Mali
Na urządzeniach Mali fragmenty GPU zawierają ścieżki fragmentu, niefragmentu i czasami dodatkowego niefragmentu. W przypadku mniej złożonych klatek praca związana z fragmentem i poza fragmentem jest wykonywana sekwencyjnie, więc można odróżnić pracę jednej ramki od drugiej, szukając przerw między aktywnymi działaniami GPU.
Jeśli znasz zadanie przesyłane do GPU, możesz zidentyfikować wzór przesłanych przejść renderowania, aby uzyskać informacje o tym, kiedy zaczyna się i kończy dany kadr.


W przypadku aplikacji, które mają bardziej równoległy proces GPU, możesz uzyskać czasy renderowania klatek przez GPU, wyszukując w panelu Wybór dla każdego wycinka wszystkie klatki, które mają ten sam identyfikator submissionID.
W przypadku aplikacji opartych na Vulkan do tworzenia klatki można używać wielu przesłanych danych. Śledź identyfikatory przesyłania za pomocą ścieżki Zdarzenia Vulkan, która zawiera wycinek dla każdej przesyłanej treści. Po wybraniu sekcji przesłania zostaną wyróżnione wszystkie sekcje aktywności GPU, które odpowiadają przesłaniu.


Urządzenia z procesorami Adreno
Na urządzeniach z procesorem Adreno fragmenty GPU pojawiają się w śladzie GPU Queue 0 i są zawsze reprezentowane sekwencyjnie, dzięki czemu możesz przeglądać wszystkie fragmenty, które reprezentują przejścia renderowania dla klatki, i wykorzystywać je do pomiaru czasu renderowania klatki przez GPU.


Podobnie jak w przypadku Mali opisanym wcześniej: jeśli aplikacja korzysta z Vulkana, ścieżka Vulkan Events zawiera informacje o pracy przesyłanej do wykonania ramki. Aby wyróżnić przejścia renderowania, kliknij slajdy Vulkan Events powiązane z klatką.

W niektórych sytuacjach granice klatek GPU są trudniejsze do odróżnienia, ponieważ aplikacja jest mocno związana z procesorem graficznym. W takich sytuacjach, jeśli znasz zadanie przesyłane do GPU, możesz określić wzór, według którego wykonywane są przejścia renderowania, i na tej podstawie określić granice klatek.

Liczniki GPU
Jeśli informacje o podziele GPU nie są dostępne w śladzie, możesz oszacować czas GPU na podstawie licznika GPU.
Urządzenia Mali
Na urządzeniach z procesorem Mali możesz użyć ścieżki Wykorzystanie GPU, aby oszacować czas generowania klatek przez GPU w przypadku aplikacji, która nie jest intensywnie korzystająca z GPU. Aplikacje, które nie wymagają intensywnego wykorzystania karty graficznej, mają regularne okresy wysokiej i niskiej aktywności karty graficznej, a nie stale wysokiej aktywności. Aby oszacować czasy generowania klatek GPU za pomocą ścieżki Wykorzystanie GPU, zmierz czas trwania okresów wysokiej aktywności na ścieżce.

Jeśli aplikacja jest bardziej obciążająca dla GPU, wykorzystanie GPU może być stale bardzo wysokie. W takim przypadku możesz użyć ścieżek wykorzystywania kolejki fragmentów i wykorzystywania kolejki bez fragmentów, aby monitorować aktywność GPU i szacować czasy generowania klatek przez GPU. Szukanie wzorców na ścieżkach fragmentu i niefragmentu pozwala uzyskać przybliżone oszacowanie, gdzie znajdują się granice ramki, i wykorzystać to do pomiaru czasu ramki GPU.

Urządzenia z procesorami Adreno
Jeśli aplikacja nie jest obciążająca dla GPU, na urządzeniach z Adreno możesz oszacować czas renderowania klatki przez GPU w taki sam sposób jak w sekcji o urządzeniach Mali.

Jeśli aplikacja jest bardziej obciążająca dla procesora graficznego i ma stale wysoki odsetek wykorzystania GPU, możesz użyć ścieżek Instrukcje wierzchołka / sekunda i Instrukcje fragmentu / sekunda, aby oszacować czas generowania klatek przez GPU. Szukanie wzorców w poziomach aktywności tych ścieżek pozwala uzyskać przybliżone oszacowanie, gdzie znajdują się granice ramki, i wykorzystać je do pomiaru czasu trwania ramki GPU.

Te inne ścieżki mogą zawierać podobne informacje:
- Zacienione wierzchołki / sekunda
- Zacienione fragmenty / Drugi
- % czasu tworzenia cieniowania wierzchołków
- % fragmentów cieniowania w czasie