perfetto
to narzędzie, które umożliwia zbieranie informacji o wydajności z urządzeń z Androidem za pomocą Android Debug Bridge (ADB). Wywołaj narzędzie perfetto
za pomocą polecenia adb shell perfetto ...
.
perfetto
korzysta z różnych źródeł do zbierania danych na temat wydajności z Twojego urządzenia, np.:
ftrace
– informacje z jądraatrace
na potrzeby adnotacji dotyczących przestrzeni użytkownika w usługach i aplikacjachheapprofd
na potrzeby informacji o wykorzystaniu pamięci natywnej przez usługi i aplikacje
Na tej stronie opisujemy, jak wywołać funkcję perfetto
i skonfigurować ją pod kątem generowania oczekiwanych danych wyjściowych. Więcej informacji znajdziesz w dokumentacji usługi perfetto
.
Składnia
W tej sekcji opisujemy, jak za pomocą ADB wywoływać metodę perfetto
w różnych trybach i generować log czasu.
Wybór źródła danych
perfetto
oferuje 2 tryby określające źródła danych używane do rejestrowania logu czasu:
- tryb jasny: umożliwia wybranie tylko podzbioru źródeł danych, w szczególności
atrace
iftrace
. Ten tryb udostępnia jednak interfejs podobny dosystrace
. - tryb normalny: pobiera konfigurację w buforze protokołu i pozwala na wykorzystanie większej liczby funkcji
perfetto
przez używanie źródeł danych innych niżatrace
iftrace
.
Opcje ogólne
W tabeli poniżej znajdziesz listę opcji, które są dostępne, gdy używasz metody perfetto
w jednym z trybów:
Opcja | Opis |
---|---|
--background |
|
perfetto natychmiast zamyka interfejs wiersza poleceń i kontynuuje rejestrowanie logu czasu w tle. |
--background-wait | -D
|
Podobnie jak --background , ale czeka (do 30 s) na uruchomienie wszystkich źródeł danych przed zakończeniem. Kod wyjścia ma wartość zero w przypadku pomyślnego potwierdzenia. W przeciwnym razie ma wartość inną niż zero (błąd lub czas oczekiwania).
|
--alert-id
|
Identyfikator alertu, który aktywował ten log czasu. |
--config-id
|
Identyfikator konfiguracji aktywatora. |
--config-uid
|
Identyfikator UID aplikacji, która zarejestrowała konfigurację. |
--subscription-id
|
Identyfikator subskrypcji, która aktywowała ten log czasu. |
--out OUT_FILE |
|
Określa żądaną ścieżkę do wyjściowego pliku śledzenia lub Uwaga: musisz podać pełną nazwę ścieżki pliku wyjściowego. Zwykle pliki powinny być zapisane w folderze |
--upload
|
Po zakończeniu przekazuje log czasu do pakietu określonego przez komunikat IncidentReportConfig w konfiguracji logu czasu. |
--no-guardrails
|
Włączenie flagi --upload podczas testowania wyłącza zabezpieczenia przed nadmiernym wykorzystaniem zasobów. |
--reset-guardrails
|
Resetuje stały stan barier i wyjść na potrzeby testowania. |
--rsave-for-bugreport
|
Jeśli uruchomiony jest log czasu z wartością bugreport_score > 0, zapisuje go w pliku. Po zakończeniu zwraca ścieżkę.
|
--query
|
Wysyła zapytanie o stan usługi i drukuje go w postaci tekstu zrozumiałego dla człowieka. |
--query-raw
|
Element podobny do --query , ale wyświetla nieprzetworzone bajty zakodowane protokonie: tracing_service_state.proto. |
--help | -h
|
Drukuje tekst pomocy dla narzędzia perfetto .
|
Tryb jasny
Ogólna składnia polecenia perfetto
w trybie jasnym wygląda tak:
adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ] [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]... --out FILE
W tabeli poniżej znajdziesz listę opcji dostępnych w przypadku korzystania z funkcji perfetto
w trybie jasnym:
Opcja | Opis |
---|---|
--time TIME[s|m|h] |
|
Określa czas trwania logu czasu w sekundach, minutach lub godzinach.
Na przykład --time 1m określa czas trwania logu czasu wynoszący 1 minutę.
Domyślny czas trwania to 10 sekund.
|
--buffer SIZE[mb|gb] |
|
Określa rozmiar bufora pierścienia w megabajtach (MB) lub gigabajtach (GB).
Domyślny parametr to --buffer 32mb .
|
--size SIZE[mb|gb] |
|
Określa maksymalny rozmiar pliku w megabajtach (MB) lub gigabajtach (GB). Domyślnie perfetto używa tylko bufora pierścieniowego w pamięci.
|
--app | -a
|
Nazwa aplikacji na Androida (atrace) |
Po tych opcjach wyświetla się lista specyfikatorów zdarzeń:
Wydarzenie | Opis |
---|---|
ATRACE_CAT |
Określa kategorie atrace , dla których chcesz zarejestrować log czasu.
Na przykład to polecenie śledzi śledzenie Menedżera okien za pomocą funkcji atrace : adb shell perfetto --out FILE wm
Aby rejestrować inne kategorie, zobacz listę kategorii ( |
FTRACE_GROUP/FTRACE_NAME |
Określa zdarzenia ftrace , dla których chcesz zarejestrować log czasu.
Na przykład to polecenie śledzi zdarzenia sched/sched_switch :
adb shell perfetto --out FILE sched/sched_switch |
Tryb normalny
Ogólna składnia polecenia perfetto
w trybie normalnym to:
adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE
W tabeli poniżej znajdziesz listę opcji, które są dostępne, gdy używasz funkcji perfetto
w trybie normalnym:
Opcja | Opis |
---|---|
--config CONFIG_FILE | -c CONFIG_FILE
|
Określa ścieżkę do pliku konfiguracji. W trybie normalnym niektóre konfiguracje mogą być zakodowane w buforze protokołu konfiguracji. Ten plik musi być zgodny ze schematem bufora protokołu określonym w AOSP trace_config.proto .
Wybierz i skonfiguruj źródła danych za pomocą elementu |
--txt
|
Instruuje perfetto , aby analizował plik konfiguracyjny jako pbtxt . Ta flaga jest przeznaczona tylko do testów lokalnych i nie zalecamy jej włączania w środowisku produkcyjnym. |
Obsługiwane źródła danych
W tej sekcji opisujemy różne źródła, których perfetto
używa do generowania logu czasu.
Ftrace
Źródło danych ftrace
umożliwia perfetto
pobieranie zdarzeń z jądra.
Włącz to źródło, ustawiając w DataSourceConfig wartość ftrace_config
.
Zdarzenia, które można włączyć, to:
-
sched/sched_switch
sched/sched_wakeup
sched/sched_wakeup_new
sched/sched_process_exec
sched/sched_process_exit
sched/sched_process_fork
sched/sched_process_free
sched/sched_process_hang
sched/sched_process_wait
Zdarzenia systemu plików:
W zależności od urządzenia, wersji systemu operacyjnego lub jądra może być dostępnych więcej zdarzeń. Więcej informacji znajdziesz w sekcji config protos.
Statystyki procesów
Źródło danych statystyk procesów umożliwia uzyskiwanie liczników odpytań dotyczących systemu i poszczególnych procesów.
Włącz to źródło, ustawiając wartości process_stats_config
i sys_stats_config
w DataSourceConfig.
Dane generowane przez perfetto
obejmują:
-
/proc/meminfo
/proc/vmstat
/proc/stat
-
/proc/\<pid\>/status
/proc/\<pid\>/oom_score_adj
W zależności od urządzenia, wersji systemu operacyjnego i jądra może być dostępnych więcej zdarzeń. Więcej informacji znajdziesz w protokołach konfiguracji sys_stats
i process_stats
.
heapprofd
heapprofd
umożliwia próbkowanie przyczyn użycia pamięci natywnej.
Włącz to źródło, ustawiając heapprofd_config
w DataSourceConfig. To ustawienie tworzy ProfilePackets
, w tym ramki Java stosu wywołań.
Dodatkowe informacje o korzystaniu z heapprofd
znajdziesz na stronie perfetto.dev
.
Inne źródła
W zależności od urządzenia, wersji systemu operacyjnego i jądra może być dostępnych więcej źródeł danych. Więcej informacji znajdziesz w opisie konfiguracji źródła danych.
Dodatkowe informacje na temat właściwości perfetto
znajdziesz na stronie perfetto.dev.