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ł, aby zbierać z Twojego urządzenia ślady wydajności, takie jak:
ftrace: informacje z jądraatracena adnotacje w przestrzeni użytkownika w usługach i aplikacjachheapprofd, aby uzyskać informacje o wykorzystaniu pamięci natywnej przez usługi i aplikacje.
Na tej stronie opisujemy, jak wywołać perfetto i skonfigurować go tak, aby generował odpowiednie dane wyjściowe. Więcej informacji znajdziesz w dokumentacji perfetto.
Umiejętności związane z Androidem
Wyświetl na GitHubieProfiler Androida
android skills add android-profilerSkładnia
W tej sekcji opisujemy, jak używać ADB do wywoływania perfetto w różnych trybach i generowania logu czasu oczekiwania.
Wybór źródła danych
perfetto obejmuje 2 tryby, które określają źródła danych używane do rejestrowania logu czasu:
- tryb jasny: można wybrać tylko podzbiór źródeł danych, a konkretnie
atraceiftrace. Ten tryb oferuje jednak interfejs podobny dosystrace. - tryb normalny: pobiera konfigurację w buforze protokołu i umożliwia korzystanie z większej liczby funkcji
perfettodzięki użyciu źródeł danych innych niżatraceiftrace.
Opcje ogólne
W tabeli poniżej znajdziesz opcje dostępne podczas korzystania z perfetto w obu trybach:
Tabela 1. Lista dostępnych ogólnych opcji narzędzia perfetto.
| Opcja | Opis |
|---|---|
--background |
|
perfetto natychmiast zamyka interfejs wiersza poleceń i kontynuuje nagrywanie śladu w tle. |
--background-wait | -D
|
Podobnie jak --background, ale przed zakończeniem czeka (do 30 s) na uruchomienie wszystkich źródeł danych. Kod wyjścia wynosi 0, jeśli otrzymano potwierdzenie, lub inną wartość (błąd lub przekroczenie limitu czasu).
|
--alert-id
|
Identyfikator alertu, który wywołał ten log czasu. |
--config-id
|
Identyfikator konfiguracji wyzwalającej. |
--config-uid
|
Identyfikator UID aplikacji, która zarejestrowała konfigurację. |
--subscription-id
|
Identyfikator subskrypcji, która wywołała ten log czasu. |
--out OUT_FILE |
|
Określa żądaną ścieżkę do wyjściowego pliku śledzenia lub Uwaga: musisz podać pełną ścieżkę do pliku wyjściowego. Zwykle pliki powinny być zapisywane w folderze |
--upload
|
Po zakończeniu przekazuje ślad do pakietu określonego przez komunikat IncidentReportConfig w konfiguracji śladu proto. |
--no-guardrails
|
Wyłącza zabezpieczenia przed nadmiernym wykorzystaniem zasobów, gdy podczas testowania włączona jest flaga --upload. |
--reset-guardrails
|
Resetuje stały stan zabezpieczeń i wyjść na potrzeby testowania. |
--rsave-for-bugreport
|
Jeśli uruchomiony jest log z bugreport_score > 0, zapisuje go w pliku. Po zakończeniu wyświetla ścieżkę.
|
--query
|
Sprawdza stan usługi i wyświetla go w postaci tekstu zrozumiałego dla człowieka. |
--query-raw
|
Podobnie jak --query, ale drukuje nieprzetworzone bajty zakodowane w formacie proto tracing_service_state.proto. |
--help | -h
|
Wyświetla tekst pomocy dotyczący narzędzia perfetto.
|
Tryb jasny
Ogólna składnia używania 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
Tabela poniżej zawiera listę opcji dostępnych podczas korzystania z perfetto w trybie jasnym:
Tabela 2. Lista dostępnych opcji narzędzia perfetto w trybie jasnym.
| Opcja | Opis |
|---|---|
--time TIME[s|m|h] |
|
Określa czas trwania śledzenia w sekundach, minutach lub godzinach.
Na przykład --time 1m określa czas trwania logu czasu na 1 minutę.
Domyślny czas to 10 sekund.
|
--buffer SIZE[mb|gb] |
|
Określa rozmiar bufora pierścieniowego 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 cyklicznego w pamięci.
|
--app | -a
|
Nazwa aplikacji na Androida (atrace) |
Po tych opcjach następuje lista specyfikatorów zdarzeń:
Tabela 3. Lista specyfikatorów zdarzeń dla trybu jasnego.
| Zdarzenie | Opis |
|---|---|
| ATRACE_CAT |
Określa kategorie atrace, dla których chcesz zarejestrować log czasu.
Na przykład to polecenie śledzi menedżera okien za pomocą atrace:
adb shell perfetto --out FILE wm
Aby nagrać inne kategorie, zapoznaj się z tą 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 użycia perfetto w trybie normalnym wygląda tak:
adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE
W tabeli poniżej znajdziesz opcje dostępne podczas korzystania z perfetto w trybie normalnym:
Tabela 4. Lista dostępnych opcji narzędzia 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ć kodowane w buforze protokołu konfiguracji. Ten plik musi być zgodny ze schematem bufora protokołu zdefiniowanym w AOSP trace_config.proto.
Wybierz i skonfiguruj źródła danych za pomocą elementu |
--txt
|
Instruuje perfetto, aby przeanalizować plik konfiguracji jako pbtxt. Ta flaga jest przeznaczona tylko do testowania lokalnego i nie zalecamy włączania jej w środowisku produkcyjnym. |
Obsługiwane źródła danych
W tej sekcji opisano różne źródła, których perfetto używa do generowania logu czasu oczekiwania.
ftrace
Źródło danych ftrace umożliwia perfetto pobieranie zdarzeń z jądra.
Włącz to źródło, ustawiając ftrace_config w DataSourceConfig.
Zdarzenia, które można włączyć, to m.in.:
Aktywność związana z planowaniem:
sched/sched_switchsched/sched_wakeupsched/sched_wakeup_newsched/sched_process_execsched/sched_process_exitsched/sched_process_forksched/sched_process_freesched/sched_process_hangsched/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 protokołach konfiguracji.
Statystyki procesów
Źródło danych statystyk procesów umożliwia uzyskiwanie liczników odpytywania dotyczących systemu i poszczególnych procesów.
Włącz to źródło, ustawiając 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 generuje ProfilePackets, w tym ramki Java stosu wywołań.
Więcej informacji 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 mogą być dostępne dodatkowe źródła danych. Więcej informacji znajdziesz w protokołach konfiguracji źródła danych.
Więcej informacji o perfetto znajdziesz na stronie perfetto.dev.