Statystyki wydajności to nowa funkcja Android Vitals opracowana specjalnie dla deweloperów gier i innych deweloperów, których aplikacje wykorzystują kod natywny. Statystyki wydajności są dostarczane za pomocą nowej wtyczki Android Performance Tuner, która pozwala deweloperom gier w pełni wykorzystać możliwości funkcji Android Vitals.
W tym artykule znajdziesz informacje na temat podstawowych zagadnień związanych z narzędziem Android Performance Tuner i statystykami wydajności oraz używanych przez nie mechanizmów wyliczeń:
- Parametry wierności i poziomy jakości
- Adnotacje
- Docelowa liczba klatek i docelowy czas renderowania klatki
- Progi wolnego i szybkiego renderowania klatki
- Mierzony czas renderowania klatki
- Dane o szybkim i wolnym renderowaniu klatki
- Problemy i możliwości
Podstawowe pojęcia
Parametry wierności i poziomy jakości
Parametry wierności aplikacji wpływają na wydajność i jakość grafiki gry, na przykład na poziom szczegółowości siatki, rozdzielczość tekstur i metodę antyaliasingu. Mogą to być zestawy wartości ciągłych (np. 0–100%), binarnych (tak/nie) lub innego typu.
Poziom jakości to wstępnie zdefiniowany zestaw wartości parametrów wierności. Poziomy jakości pozwalają zdefiniować kombinacje parametrów zapewniające danej grupie użytkowników akceptowalny poziom wierności przy stałej liczbie klatek. Nie wszystkie możliwe kombinacje parametrów pozwalają zapewnić użytkownikom wrażenia na odpowiednim poziomie.
Ustawianie parametrów wierności i poziomów jakościParametry wierności i poziomy jakości aplikacji są definiowane podczas integracji z wtyczką Android Performance Tuner. W ramach integracji możesz zdefiniować maksymalnie 15 poziomów jakości i nieograniczoną liczbę parametrów wierności. Poziomy są uporządkowane rosnąco – 1 oznacza najniższy poziom wierności.
Poziomy jakości i parametry wierności możesz sprawdzić w Konsoli Play (Monitoruj i ulepszaj > Android Vitals > Podsumowanie > Sprawdź poziomy jakości) – ale mają one status tylko do odczytu. Aby zmienić parametry, musisz opublikować aktualizację. Więcej informacji znajdziesz w odpowiednim przewodniku po integracji.
Poziomy jakości służą do tagowania sesji, dzięki któremu możesz sprawdzić, czy poszczególne modele urządzeń działają na zbyt wysokim lub zbyt niskim poziomie jakości.
Parametry wierności służą do określania sposobu przyporządkowania każdego urządzenia użytkownika do poziomu jakości.
Ważne: jeśli parametry wierności (i poziomy jakości) nie odzwierciedlają dokładnie ustawień aplikacji na urządzeniach użytkowników, nie można przypisać sesji do jednego z wcześniej zdefiniowanych poziomów jakości. Takie sesje są wyświetlane z etykietą „nieznanego” poziomu jakości. Problemy dotyczące „nieznanych” poziomów jakości są trudne do rozwiązania, ponieważ mogą obejmować wiele różnych poziomów wierności. W takim przypadku zalecamy sprawdzenie integracji.
Więcej informacji o poziomach jakości, również tych określanych przez użytkowników, znajdziesz w artykule Rozwiązywanie problemów z narzędziem Android Performance Tuner i najczęstsze pytania na jego temat.
Adnotacje
Adnotacje to „tagi” w scenach w grze lub aplikacji, które zawierają kontekstowe informacje o tym, co gra robi w danej klatce. Struktura adnotacji wygląda w ten sposób:
- Typ adnotacji: wartość adnotacji
- Na przykład: „Postać”: „Główny bohater”
Uwaga: klatka może zawierać wiele adnotacji.
Sposób ustawiania adnotacjiAdnotacje są definiowane podczas integracji. Aby zmienić adnotacje, musisz opublikować aktualizację. Więcej informacji znajdziesz w odpowiedniej sekcji przewodnika po integracji.
Używanie adnotacji
Adnotacje pomagają ustalić, czy konkretne sceny w grze powodują problemy lub stwarzają możliwości. Aby uzyskać odpowiedni poziom szczegółowości problemów, musisz zdefiniować wystarczająco szczegółowe adnotacje.
Docelowa liczba klatek i docelowy czas renderowania klatki
Docelowa liczba klatek jest używana w testach porównawczych badających czas renderowania klatki na różnych modelach urządzeń. Na potrzeby tych testów wartość jest konwertowana na docelowy czas renderowania klatki. Stosowany jest też zakres tolerancji, na podstawie którego określamy próg wolnego renderowania.
Liczba klatek to parametr z jednostką „liczba klatek na sekundę” (kl./s). Czas renderowania klatki jest mierzony w milisekundach (ms). Te 2 elementy łączy prosta zależność:
- Czas renderowania klatki (ms) = 1000/liczba klatek (kl./s)
Obecnie możesz wybrać jedną z tych docelowych wartości:
Docelowa liczba klatek (kl./s) |
Docelowy czas renderowania klatki (ms) |
30 |
33,333 |
60 |
16,667 |
120 |
8,333 |
Jeśli nie masz pewności, którą docelową liczbę klatek wybrać, zacznij od 30 kl./s. To dobra podstawowa liczba klatek w przypadku wielu gier. Docelową liczbę klatek możesz zmienić w każdej chwili. Pamiętaj, że nie ma to wpływu na Twoje podstawowe dane, a jedynie na statystyki i parametry.
Progi wolnego i szybkiego renderowania klatki
Progi określające statystyki i parametry klatek są obliczane na podstawie docelowej liczby klatek:
- Próg wolnego renderowania klatki = docelowy czas renderowania klatki + tolerancja
- Próg szybkiego renderowania klatki = o 25% szybciej niż docelowy czas renderowania klatki (zapewnia pewien margines)
Oto progi obowiązujące w przypadku różnej docelowej liczby klatek:
Docelowa liczba klatek (kl./s) |
Docelowy czas renderowania klatki (ms) |
Próg wolnego renderowania klatki (ms) |
Próg szybkiego renderowania klatki (ms) |
30 |
33,333 |
35,37 |
25,0 |
60 |
16,667 |
18,54 |
12,5 |
120 |
8,333 |
10,12 |
6,25 |
Aby uzyskać stabilne i przydatne statystyki, do czasu renderowania klatki stosujemy tolerancję, która pozwala skorygować niedokładności pomiarów. Dzięki temu pokazywane są tylko problemy widoczne dla użytkowników, a nie niezauważalne dla nich odchylenia.
Aby można było wykryć ewentualne możliwości, stosujemy margines wynoszący 25%. Należy go jednak traktować jako wskazówkę, a nie gwarancję istnienia możliwości. Przed przeniesieniem urządzeń na wyższy poziom jakości zawsze zalecamy dokładniejsze przeanalizowanie danych i przeprowadzenie testów – nawet jeśli urządzenie ma pewien margines, może on być niewystarczający do utrzymania stałej liczby klatek na kolejnym poziomie jakości.
Mechanizm obliczeń wtyczki Android Performance Tuner
Zrozumienie mechanizmów obliczeń, na których opiera się wtyczka Android Performance Tuner, pomoże Ci w pełni wykorzystać dostępne statystyki.
Mierzony czas renderowania klatki
Przy zbieraniu danych dotyczących czasu renderowania wielu klatek w Twojej aplikacji bierzemy pod uwagę czas renderowania na 90. percentylu. Jest to maksymalny czas renderowania najszybszych 90% klatek.
Próg 90% jest obecnie stałym parametrem i nie można go zmienić.
Zalety percentyli w porównaniu z wartościami średnimi
Dobre wrażenia użytkownika wymagają stałej liczby klatek podczas całej sesji. Wartość średnia nie zapewnia statystyk dotyczących spójności, ponieważ szybko i wolno renderowane klatki mogą się równoważyć. Wykonanie pomiaru na 90. percentylu pozwala uzyskać dane, które odzwierciedlają zachowanie większości klatek.
Zbiorcze dane o czasie renderowania klatkiDane o czasie renderowania klatki są zbierane i raportowane w segmentach histogramu, a nie jako ciągła zmienna, by zminimalizować ilość danych wysyłanych z urządzeń użytkowników. Zarejestrowany czas renderowania klatki to górna granica segmentu, w którym ten czas został sklasyfikowany.
W efekcie raportowane czasy renderowania klatki są grupowane według określonych wartości, a nie ciągłe.
Domyślne segmenty są tak skonfigurowane, by zapewniać odpowiednią szczegółowość na potrzeby rozwiązywania problemów dotyczących docelowej wartości 30, 60 lub 120 kl./s. Są też na tyle wąskie, by nigdy nie doszło do zawyżenia czasu renderowania spowolnionych klatek.
Dane o szybkim i wolnym renderowaniu klatki
Poszczególne klatki są zaliczane jako spowolnione lub szybkie na podstawie porównania z wartościami progowymi:
- Pojedyncza klatka jest spowolniona, jeśli czas jej renderowania jest dłuższy niż na progu wolnego renderowania klatki.
- Pojedyncza klatka jest szybka, jeśli czas jej renderowania jest krótszy niż na progu szybkiego renderowania klatki.
Dane dotyczące klatek są zwykle obliczane tylko w kontekście konkretnego problemu lub możliwości. Przykłady:
- liczba i procent wolno renderowanych klatek na modelu urządzenia X na poziomie jakości 4,
- liczba i procent szybkich klatek w adnotacji Y na wszystkich poziomach jakości,
- procent spowolnionych i szybkich klatek na urządzeniu o specyfikacji Z.
Uwaga: jedynym wyjątkiem są tu dane o spowolnionych klatkach widoczne w podsumowaniu, mierzone dla wszystkich klatek.
AsymetriaSpowolnione i szybkie klatki nie stanowią swoich odwrotności: mają różne progi i różne kryteria. Oznacza to, że model urządzenia lub adnotacja o niskiej wydajności może również renderować klatki szybko, a model urządzenia lub adnotacja o wysokiej wydajności może również renderować klatki powoli:
Kryteria |
Spowolnione klatki (%) |
Szybko wyrenderowane (%) |
|
Problem |
90% czasu renderowania klatki > spowolniona klatka |
> 10% według definicji |
Dowolna wartość od 0% do 90% |
Możliwości |
90% czasu renderowania < szybka klatka |
Dowolna wartość od 0% do 10% |
> 90% według definicji |
Uwaga: czasami dostępne są dane zarówno o spowolnionych, jak i szybkich klatkach – ma to zapewnić lepszy kontekst problemu lub możliwości.
Problemy i możliwości
Wiedząc o problemach i możliwościach, możesz podejmować odpowiednie działania związane z czasem renderowania klatki. Problem występuje, jeśli model urządzenia lub adnotacja (zgodnie z definicją powyżej) nie osiąga stałego docelowego czasu renderowania klatki. Możliwość to sytuacja, w której model urządzenia lub adnotacja regularnie przekracza docelowy czas renderowania o wartość wystarczającą do tego, aby osiągnąć większą wierność.
Aby wychwycić problemy i możliwości, porównujemy czas renderowania klatki na 90. percentylu z wartościami progowymi wolnego i szybkiego renderowania klatki. Progi są określane na podstawie docelowego czasu renderowania:
Typy statystyk |
Definicja |
Sposób obliczania |
Problem:
|
„co najmniej 10% klatek nie osiąga docelowego czasu renderowania” |
czas renderowania na 90. percentylu > spowolniona klatka |
Możliwość:
|
„co najmniej 90% klatek ma czas renderowania znacznie krótszy niż docelowy” |
czas renderowania na 90. percentylu < szybka klatka |
Problemy i możliwości są definiowane tylko w tym kontekście:
- Model urządzenia × poziom jakości
- Adnotacja × poziom jakości
Umożliwia to przeanalizowanie problemu lub możliwości. Przykład:
- Problem dotyczący modelu urządzenia X o poziomie jakości 4 => przyjrzyj się modelowi urządzenia X.
- Możliwość dotycząca adnotacji Y na wszystkich poziomach jakości => przyjrzyj się adnotacji Y.
Problemy i możliwości nie stanowią przeciwieństw. W odróżnieniu od możliwości problemy mają mniejsze wymagania pozwalające na ich pokazanie. Jest też sporo „miejsca” między modelem urządzenia lub adnotacją bez problemów a modelem urządzenia lub adnotacją z możliwością.
Na niektórych poziomach jakości adnotacja może wykazywać problemem, który na innych poziomach będzie możliwością. Dotyczy to również modeli urządzeń, ale w praktyce scenariusz, w którym model urządzenia pojawia się na różnych poziomach jakości, jest bardzo mało prawdopodobny.
Problemy i możliwości są powiązane z docelową liczbą klatek. Jeśli ta wartość się zmieni, zmienią się również problemy i możliwości. Podstawowe dane o czasie renderowania klatki pozostaną jednak takie same.