Aby określić, czy wątki procesu gry są odpowiednio wykorzystywane i zaplanowane pod kątem jak najlepszej wydajności, musisz wziąć pod uwagę kilka kwestii.
- Tempo klatek
- Wielowątkowość i równoległość wątków
- Koligacja rdzeni procesora
Wielowątkowość
Wiele gier i silników gier korzysta z wielowątkowości, aby podzielić pracę procesora na logiczne zadania, które mogą być wykonywane w pewnym stopniu niezależnie. Typowa konfiguracja obejmuje wątek gry do obsługi danych wejściowych i logiki gry, wątek renderowania do przygotowywania i przesyłania obiektów do narysowania oraz wątki robocze do innych zadań, takich jak animacje czy dźwięk.
Zalecamy równoległe wykonywanie wątków, aby wykorzystać wzrost wydajności wynikający z wielowątkowości. Przykładem może być sytuacja, w której wątki gry i renderowania działają częściowo lub w pełni równolegle na różnych rdzeniach. Nie zawsze jest to możliwe, np. w przypadku zależności udostępnionych danych. Jeśli jednak jest to możliwe, może to skrócić czas pracy procesora, a tym samym potencjalnie zwiększyć liczbę klatek.
Koligacja rdzeni procesora
Jednym z czynników, który ma znaczący wpływ na wydajność zbiorów zadań procesora, jest sposób ich planowania na rdzeniach. Może się ona składać z 2 elementów:
- Czy wątki gry działają na rdzeniu najbardziej odpowiednim dla ich obciążenia.
- czy wątki gry często przełączają się między rdzeniami.
Nowoczesne urządzenia często korzystają z architektury zwanej obliczeniami heterogenicznymi, w której rdzenie mają różny poziom wydajności:
- Jeden lub kilka rdzeni zapewnia najwyższą wydajność szczytową, ale zużywa więcej energii. Są one czasami nazywane „dużymi” rdzeniami.
- Pozostałe rdzenie mają niższą wydajność szczytową, ale są bardziej energooszczędne. Są one czasami nazywane „małymi” rdzeniami.
- Opcjonalnie: co najmniej 1 rdzeń zapewnia równowagę między wydajnością a mocą. Są one czasami nazywane „średnimi” rdzeniami.
Możesz zbadać zachowanie wątków procesora w sekcji Użycie procesora, włączając procesor w konfiguracji profilu podczas tworzenia śladu. Powiększając fragment śladu <200 ms, możesz wyświetlić poszczególne procesy działające na rdzeniach procesora urządzenia. Zwykle mniejsze rdzenie odpowiadają mniejszym indeksom (np. procesory „0”–„3”), a większe rdzenie – większym indeksom (np. procesory „6”–„7”). Środkowe rdzenie, jeśli są obecne, zajmują indeksy pomiędzy nimi (np. procesory „5”–„6”). Jest to powszechna konwencja, ale nie ma gwarancji, że tak się stanie.
Jeśli zauważysz, że niektóre wątki są planowane na procesorach, które nie spełniają ich wymagań dotyczących wydajności lub mocy, rozważ ręczne ustawienie powiązania z procesorem dla tych wątków.
Możesz też sprawdzić, czy wątki przełączają się między rdzeniami. Takie przełączanie rdzeni wiąże się z pewnym obciążeniem wynikającym z przełączania kontekstu i utraty stanu w pamięci podręcznej lub rejestrach rdzenia.
Ustawienie powiązania wątku z procesorem informuje system, aby zaplanował go na danym rdzeniu, gdy gra jest na pierwszym planie. Podczas tego procesu należy wziąć pod uwagę kilka czynników:
- Oprogramowanie platformy nie może dynamicznie dostosowywać rozmieszczenia zadań do czynników czasu działania, takich jak obciążenie i ograniczenie termiczne.
Testy wydajności na różnych urządzeniach mogą dać bardzo różne wyniki, zwłaszcza jeśli urządzenia znacznie różnią się ceną lub datą premiery.
Nowsze lub droższe urządzenie może bez problemu wykonywać dane obciążenie na mniejszym rdzeniu, ale starsze lub tańsze urządzenie może wymagać większego rdzenia, aby zdążyć z wykonaniem tego samego obciążenia.
Wymuszanie powiązań z dużymi rdzeniami może niepotrzebnie zwiększyć zużycie baterii i obciążenie termiczne.
Z tych powodów zwykle najlepiej jest unikać ręcznego ustawiania powiązań procesora.