perfetto

perfetto è uno strumento che 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 origini per raccogliere dati di rilevamento delle prestazioni dal tuo dispositivo, ad esempio:

  • ftrace per informazioni dal kernel
  • atrace per l'annotazione dello spazio utente in servizi e app
  • heapprofd per le informazioni native sulla memoria 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 che utilizza per registrare la traccia:

  • modalità Luce: puoi 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 parte maggiore della funzionalità di perfetto utilizzando origini dati diverse da atrace e ftrace.

Opzioni generali

Nella tabella seguente sono elencate le opzioni disponibili quando utilizzi perfetto in una delle due modalità:

Tabella 1. Elenco delle opzioni generali disponibili dello strumento 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 diverso da zero in caso contrario (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 campo - 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 completamento, passa la traccia al pacchetto specificato dal messaggio IncidentReportConfig nella configurazione della traccia proto.
--no-guardrails Disabilita le protezioni contro l'utilizzo eccessivo di risorse quando abiliti il flag --upload durante i test.
--reset-guardrails Consente di reimpostare lo stato permanente dei guardrail 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 protocodificati non elaborati 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

Nella tabella seguente sono elencate le opzioni disponibili quando utilizzi perfetto in modalità Luce:

Tabella 2. Elenco delle 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 ring 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 il ring buffer in memoria.
--app | -a Nome app Android (atrace)

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

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

Evento Descrizione
ATRACE_CAT Specifica le atrace categorie per cui vuoi registrare una traccia. Ad esempio, il seguente comando traccia Windows Manager 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 utilizzi perfetto in modalità normale:

Tabella 4. Elenco delle 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 ottenere 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 del 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 per le statistiche di processo consente di ottenere contatori sondaggi sul sistema e sui singoli processi.

Abilitare 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 protocolli di configurazione per sys_stats e process_stats.

heapprofd

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

Abilitare questa origine impostando heapprofd_config in DataSourceConfig. Questa impostazione produce ProfilePackets, inclusi i frame Java del tack di chiamate.

Ulteriori informazioni sull'utilizzo di 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 protocolli di configurazione dell'origine dati.

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