Perfetto

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ądra
  • atrace na adnotacje w przestrzeni użytkownika w usługach i aplikacjach
  • heapprofd, 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.

Skł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 atrace i ftrace. Ten tryb oferuje jednak interfejs podobny do systrace.
  • tryb normalny: pobiera konfigurację w buforze protokołu i umożliwia korzystanie z większej liczby funkcji perfetto dzięki użyciu źródeł danych innych niż atrace i ftrace.

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 |
-d
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 |
-o OUT_FILE

Określa żądaną ścieżkę do wyjściowego pliku śledzenia lub - dla stdout. perfetto zapisuje dane wyjściowe w pliku opisanym w poprzednich flagach. Format wyjściowy jest zgodny z formatem zdefiniowanym w AOSP trace.proto.

Uwaga: musisz podać pełną ścieżkę do pliku wyjściowego. Zwykle pliki powinny być zapisywane w folderze /data/misc/perfetto-traces.

--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] |
-t 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] |
-b 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] |
-s 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 atrace.

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 DataSourceConfig interfejsu TraceConfig zgodnie z definicją w AOSP data_source_config.proto.

--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.:

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ą:

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.