perfetto

perfetto è uno strumento che ti consente di raccogliere informazioni sulle prestazioni dai dispositivi Android tramite Android Debug Bridge (ADB). Richiama lo strumento perfetto utilizzando il comando adb shell perfetto .... perfetto utilizza varie fonti per raccogliere dati sulle prestazioni del dispositivo, ad esempio:

  • ftrace per le informazioni provenienti dal kernel
  • atrace per l'annotazione dello spazio utente in servizi e app
  • heapprofd per le informazioni sull'utilizzo della memoria nativa di servizi e app

In questa pagina viene descritto come chiamare perfetto e configurarlo per generare l'output desiderato. Per ulteriori informazioni, consulta la documentazione di perfetto.

Sintassi

Questa sezione descrive come utilizzare ADB per chiamare perfetto per diverse modalità e generare una traccia.

Selezione dell'origine dati

perfetto include le due modalità seguenti che determinano le origini dati utilizzate per registrare la traccia:

  • modalità Luce: consente di selezionare solo un sottoinsieme di origini dati, in particolare atrace e ftrace. Tuttavia, questa modalità offre un'interfaccia simile a systrace.
  • modalità normale: ottiene la configurazione in un buffer di protocollo e ti consente di sfruttare una maggiore quantità di funzionalità di perfetto utilizzando origini dati diverse da atrace e ftrace.

Opzioni generali

La seguente tabella elenca le opzioni disponibili quando utilizzi perfetto in una delle modalità:

Tabella 1. Elenco delle opzioni generali degli strumenti perfetto.

Opzione Descrizione
--background |
-d
perfetto esce immediatamente dall'interfaccia a riga di comando e continua a registrare la traccia in background.
--background-wait | -D Come --background, ma attende (fino a 30 secondi) l'avvio di tutte le origini dati prima di uscire. Il codice di uscita è pari a zero se viene ricevuta una conferma riuscita e un valore diverso da zero negli altri casi (errore o timeout).
--alert-id ID dell'avviso che ha attivato questa traccia.
--config-id ID della configurazione di attivazione.
--config-uid UID dell'app che ha registrato la configurazione.
--subscription-id ID della sottoscrizione che ha attivato questa traccia.
--out OUT_FILE |
-o OUT_FILE

Specifica il percorso desiderato del file di traccia di output o del - per stdout. perfetto scrive l'output nel file descritto nei flag precedenti. Il formato di output viene compilato con il formato definito in AOSP trace.proto.

Nota: devi specificare il percorso completo del file di output. In genere, i file devono essere scritti nella cartella /data/misc/perfetto-traces.

--upload Al termine, passa la traccia al pacchetto specificato dal messaggio IncidentReportConfig nella configurazione della traccia proto.
--no-guardrails Disabilita le protezioni dall'utilizzo eccessivo di risorse quando abiliti il flag --upload durante i test.
--reset-guardrails Reimposta lo stato persistente dei sistemi di protezione e delle uscite per i test.
--rsave-for-bugreport Se è in esecuzione una traccia con bugreport_score > 0, la traccia viene salvata in un file. Al termine, restituisce il percorso.
--query Esegue una query sullo stato del servizio e lo stampa come testo leggibile.
--query-raw Simile a --query, ma stampa byte non elaborati con codifica proto di tracing_service_state.proto.
--help | -h Stampa il testo della guida per lo strumento perfetto.

Modalità Luce

La sintassi generale per l'utilizzo di perfetto in modalità Luce è la seguente:

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

La seguente tabella elenca le opzioni disponibili quando utilizzi perfetto in modalità Luce:

Tabella 2. Elenco di opzioni dello strumento perfetto disponibili quando viene utilizzata la modalità Luce.

Opzione Descrizione
--time TIME[s|m|h] |
-t TIME[s|m|h]
Specifica la durata della traccia in secondi, minuti o ore. Ad esempio, --time 1m specifica una durata della traccia di 1 minuto. La durata predefinita è 10 secondi.
--buffer SIZE[mb|gb] |
-b SIZE[mb|gb]
Specifica le dimensioni del buffer circolare in megabyte (mb) o gigabyte (gb). Il parametro predefinito è --buffer 32mb.
--size SIZE[mb|gb] |
-s SIZE[mb|gb]
Specifica le dimensioni massime dei file in megabyte (mb) o gigabyte (gb). Per impostazione predefinita, perfetto utilizza solo ring-buffer in memoria.
--app | -a Nome app Android (atrace)

Queste opzioni sono seguite da un elenco di identificatori di evento:

Tabella 3. Elenco di identificatori evento per la modalità Luce.

Evento Descrizione
ATRACE_CAT Specifica le categorie atrace per cui vuoi registrare una traccia. Ad esempio, il seguente comando traccia Gestione finestre utilizzando atrace:
    adb shell perfetto --out FILE wm
    

Per registrare altre categorie, consulta questo elenco di atrace categorie.

FTRACE_GROUP/FTRACE_NAME Specifica gli eventi ftrace per i quali vuoi registrare una traccia. Ad esempio, il seguente comando traccia gli eventi sched/sched_switch:
      adb shell perfetto --out FILE sched/sched_switch
      

Modalità normale

La sintassi generale per l'utilizzo di perfetto in modalità normale è la seguente:

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

La seguente tabella elenca le opzioni disponibili quando si utilizza perfetto in modalità normale:

Tabella 4. Elenco di opzioni dello strumento perfetto disponibili quando si utilizza la modalità normale.

Opzione Descrizione
--config CONFIG_FILE | -c CONFIG_FILE Specifica il percorso di un file di configurazione. In modalità normale, alcune configurazioni potrebbero essere codificate in un buffer di protocollo di configurazione. Questo file deve essere conforme allo schema di buffer di protocollo definito in AOSP trace_config.proto.

Seleziona e configura le origini dati utilizzando il membro DataSourceConfig di TraceConfig, come definito in AOSP data_source_config.proto.

--txt Indica a perfetto di analizzare il file di configurazione come pbtxt. Questo flag è destinato solo ai test locali e non è consigliabile abilitarlo per la produzione.

Origini dati supportate

Questa sezione descrive le diverse origini utilizzate da perfetto per generare la traccia.

Ftrace

L'origine dati ftrace consente a perfetto di recuperare gli eventi dal kernel.

Abilita questa origine impostando ftrace_config in DataSourceConfig.

Gli eventi che possono essere attivati includono:

  • Pianificazione delle attività:

    • 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
  • Eventi di file system:

  • atrace eventi

A seconda del dispositivo, della versione del sistema operativo o del kernel, potrebbero essere disponibili altri eventi. Per saperne di più, consulta la sezione relativa ai prototipi di configurazione.

Statistiche sui processi

L'origine dati delle statistiche di processo consente di ottenere contatori di polling sul sistema e sui singoli processi.

Abilita questa origine impostando process_stats_config e sys_stats_config in DataSourceConfig.

I dati generati da perfetto includono:

A seconda del dispositivo, della versione del sistema operativo e del kernel, potrebbero essere disponibili altri eventi. Per saperne di più, consulta i prototipi di configurazione per sys_stats e process_stats.

heapprofd

heapprofd consente di campionare le cause dell'utilizzo della memoria nativa.

Abilita questa origine impostando heapprofd_config in DataSourceConfig. Questa impostazione produce ProfilePackets, inclusi i frame Java del callback.

Ulteriori informazioni su come utilizzare heapprofd sono disponibili all'indirizzo perfetto.dev.

Altre sorgenti

A seconda del dispositivo, della versione del sistema operativo e del kernel, potrebbero essere disponibili altre origini dati. Per saperne di più, consulta i prototipi di configurazione dell'origine dati.

Ulteriori informazioni su perfetto sono disponibili all’indirizzo perfetto.dev.