Perfetto

perfetto to narzędzie, które pozwala gromadzić informacje o skuteczności Urządzenia z Androidem przez Android Debug Bridge (ADB). Wywołaj metodę Narzędzie perfetto za pomocą polecenia adb shell perfetto .... perfetto używa różnych źródła danych do zbierania danych na temat wydajności z urządzenia, takie jak:

  • ftrace w celu uzyskania informacji z jądra
  • atrace na potrzeby adnotacji do przestrzeni użytkownika w usługach i aplikacjach
  • heapprofd na potrzeby informacji o wykorzystaniu pamięci natywnej przez usługi i aplikacje

Na tej stronie dowiesz się, jak wywołać funkcję perfetto i skonfigurować ją do generowania potrzebne dane wyjściowe. Więcej informacji można znaleźć w dokumentacja perfetto.

Składnia

W tej sekcji dowiesz się, jak używać ADB do wywoływania funkcji perfetto w różnych trybach i wygenerować log czasu.

Wybór źródła danych

Funkcja perfetto obejmuje 2 rodzaje trybów określających źródła danych wykorzystuje do rejestrowania Twojego logu czasu:

  • tryb uproszczony: można wybrać tylko podzbiór źródeł danych, w szczególności atrace. i ftrace. Oferuje on jednak interfejs podobny do systrace
  • tryb normalny: pobiera konfigurację w buforze protokołu i umożliwia wykorzystaj więcej funkcji usługi perfetto, używając różnych źródeł danych od atrace i ftrace.

Opcje ogólne

W tabeli poniżej znajdziesz opcje dostępne, gdy używasz pola perfetto w jednym z tych elementów: tryb:

Tabela 1. Lista dostępnych ogólnych narzędzia perfetto.

Option Opis
--background |
-d
perfetto natychmiast opuszcza interfejs wiersza poleceń i kontynuuje oraz rejestrować ślady w tle.
--background-wait | -D Podobne do: --background, ale czeka (do 30 s) na wszystkie źródła danych, aby uruchomić je przed zamknięciem. Zamknij jeśli udane potwierdzenie to odebrane i w przeciwnym razie ma wartość różną od zera (błąd lub przekroczenie limitu czasu).
--alert-id Identyfikator alertu, który uruchomił ten log czasu.
--config-id Identyfikator konfiguracji aktywującej.
--config-uid Identyfikator UID aplikacji, która zarejestrowała konfigurację.
--subscription-id Identyfikator subskrypcji, która aktywowała ten log czasu.
--out OUT_FILE |
-o OUT_FILE

Określa ścieżkę do wyjściowego pliku śledzenia lub - dla stdout. perfetto zapisuje dane wyjściowe w pliku opisanym w poprzedzające flagi. Format wyjściowy kompiluje się z formatem zdefiniowanym w AOSP trace.proto.

Uwaga: musisz podać pełną nazwę ścieżki . Pliki powinny być zazwyczaj zapisywane w Folder /data/misc/perfetto-traces.

--upload Po zakończeniu przekazuje ślad do pakietu określonego przez Komunikat IncidentReportConfig w konfiguracji logu czasu proto.
--no-guardrails Wyłącza ochronę przed nadmiernym wykorzystaniem zasobów po włączeniu Flaga --upload podczas testowania.
--reset-guardrails Resetuje trwały stan barier i wyjść do testów.
--rsave-for-bugreport Jeśli log czasu z bugreport_score > 0 jest uruchomiony, zapisze ślad w pliku. Po zakończeniu przekazuje ścieżkę na wyjściu.
--query Odpytuje stan usługi i drukuje go jako tekst zrozumiały dla człowieka.
--query-raw Podobne do --query, ale drukuje nieprzetworzone bajty proto tracing_service_state.proto.
--help | -h Drukuje tekst pomocy do narzędzia perfetto.

Tryb jasny

Ogólna składnia funkcji perfetto w trybie jasnym jest następująca:

 adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
             [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]...
             --out FILE

W tabeli poniżej znajdziesz opcje dostępne w przypadku użycia funkcji perfetto w tryb jasny:

Tabela 2. Lista dostępnych perfetto opcji narzędzi w trybie jasnym.

Option Opis
--time TIME[s|m|h] |
-t TIME[s|m|h]
Określa czas trwania logu czasu w sekundach, minutach lub godzinach. Na przykład --time 1m określa czas śledzenia wynoszący 1 minutę. Domyślny czas trwania to 10 sekund.
--buffer SIZE[mb|gb] |
-b 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] |
-s SIZE[mb|gb]
Określa maksymalny rozmiar pliku w megabajtach (MB) lub gigabajtach (GB). Według domyślnie perfetto używa tylko bufora dzwonka w pamięci.
--app | -a Nazwa aplikacji na Androida (atrace)

Obok tych opcji znajduje się lista specyfikatorów zdarzeń:

Tabela 3. Lista specyfikatorów zdarzeń dotyczących tryb jasny.

Wydarzenie Opis
ATRACE_CAT Określa kategorie atrace, dla których chcesz rejestrować log czasu. Na przykład to polecenie śledzi Menedżera okien za pomocą atrace:
    adb shell perfetto --out FILE wm
    

Aby zarejestrować inne kategorie, zobacz lista z atrace kategorii.

FTRACE_GROUP/FTRACE_NAME Określa zdarzenia ftrace, dla których chcesz rejestrować 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 funkcji perfetto w trybie normalnym jest taka:

 adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE

W tabeli poniżej znajdziesz opcje dostępne w przypadku użycia funkcji perfetto w tryb normalny:

Tabela 4. Lista dostępnych perfetto i opcjami narzędzi w trybie normalnym.

Option 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ą DataSourceConfig członek grupy TraceConfig, jako zdefiniowane w AOSP data_source_config.proto.

--txt Powoduje, że perfetto analizuje plik konfiguracyjny jako pbtxt. Ten jest przeznaczona tylko do lokalnych testów i nie zalecamy i udostępnić go w środowisku produkcyjnym.

Obsługiwane źródła danych

W tej sekcji opisujemy różne źródła używane przez perfetto do generowania danych Twojego śladu.

Ftrace

Źródło danych ftrace umożliwia usłudze perfetto pobieranie zdarzeń z jądra.

Włącz to źródło za pomocą ustawienia ftrace_config w sekcji DataSourceConfig.

Dostępne są m.in. te zdarzenia:

  • Planowanie aktywności:

    • 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 w systemie plików:

  • Zdarzenia: atrace

W zależności od urządzenia, wersji systemu operacyjnego lub jądra systemu może być więcej zdarzeń i dostępności informacji. Więcej informacji znajdziesz w artykule dotyczącym konfiguracji w konfiguracji.

Statystyki procesów

Źródło danych statystyk procesów umożliwia otrzymywanie ankietowanych liczników dotyczących i poszczególnych procesów.

Włącz to źródło przez ustawienie process_stats_config i sys_stats_config w sekcji DataSourceConfig.

Dane generowane przez funkcję perfetto obejmują:

W zależności od urządzenia, wersji systemu operacyjnego i jądra systemu może być więcej zdarzeń i dostępności informacji. Więcej informacji znajdziesz na stronie konfiguracji sys_stats. i process_stats.

heapprofd

heapprofd umożliwia próbkowanie przyczyn użycia pamięci natywnej.

Włącz to źródło przez ustawienie heapprofd_config w sekcji DataSourceConfig. To ustawienie powoduje utworzenie ProfilePackets, włącznie z ramkami Java protokołu wywołań.

Dodatkowe informacje na temat korzystania z usługi heapprofd znajdziesz na stronie perfetto.dev

Inne źródła

W zależności od urządzenia, wersji systemu operacyjnego i jądra systemu może być więcej źródeł danych i dostępności informacji. Aby dowiedzieć się więcej, zapoznaj się z protos konfiguracji źródła danych.

Dodatkowe informacje na temat perfetto można znaleźć na stronie perfetto.dev.