O perfetto é uma ferramenta que permite coletar informações de desempenho de
dispositivos Android pelo
Android Debug Bridge (adb). Invoque a
ferramenta perfetto usando o comando adb shell perfetto ....
O perfetto usa várias
fontes para coletar rastros de desempenho do dispositivo, como:
- ftracepara informações do kernel
- atracepara anotações de espaço do usuário em serviços e apps
- heapprofdpara informações de uso de memória nativa por serviços e apps
Esta página descreve como chamar o perfetto e o configurar para gerar a
saída que você quer. Para mais informações, consulte a
documentação do perfetto (link em inglês).
Sintaxe
Esta seção descreve como usar o adb para chamar o perfetto para diferentes modos
e gerar um rastro.
Seleção da origem de dados
O perfetto inclui os dois modos abaixo que determinam as origens de dados
usadas para registrar o rastro:
- Modo Light: pode selecionar apenas um subconjunto de fontes de dados, especificamente atraceeftrace. No entanto, esse modo oferece uma interface semelhante aosystrace.
- Modo Normal: recebe a configuração em um buffer de protocolo e permite
aproveitar mais da funcionalidade do perfettousando fontes de dados diferentes deatraceeftrace.
Opções gerais
A tabela abaixo lista as opções disponíveis quando o perfetto é usado em qualquer um dos
modos:
Tabela 1. Lista de opções gerais disponíveis da ferramenta perfetto.
| Opção | Descrição | 
|---|---|
| --background | | O perfettosai imediatamente da interface da linha de comando e continua
     registrando o rastro em segundo plano. | 
| --background-wait | -D | Como --background, mas aguarda (até um máximo de 30 segundos) todas as
     fontes de dados começarem antes de sair. O código de
     saída pode ser zero em caso de uma confirmação
     bem-sucedida ou diferente de zero (erro ou tempo limite). | 
| --alert-id | ID do alerta que acionou esse rastro. | 
| --config-id | ID da configuração de acionamento. | 
| --config-uid | UID do app que registrou a configuração. | 
| --subscription-id | ID da assinatura que acionou esse rastro. | 
| --out OUT_FILE | | Especifica o caminho desejado para o arquivo de rastreamento de saída ou  Observação: especifique o nome completo do caminho do
      arquivo de saída. Normalmente, os arquivos precisam ser gravados na
      pasta  | 
| --upload | Após a conclusão, transmita o rastro para o pacote especificado pela
     mensagem IncidentReportConfigna configuração do rastro do proto. | 
| --no-guardrails | Desativa a proteção contra usa excessivo de recursos ao ativar a sinalização --uploaddurante os testes. | 
| --reset-guardrails | Redefine o estado persistente das proteções e saídas para testes. | 
| --rsave-for-bugreport | Se um rastro com bugreport_score> 0 estiver em execução,
       ele vai ser salvo em um arquivo. Mostra o caminho quando concluído. | 
| --query | Consulta e mostra o estado do serviço em um texto legível. | 
| --query-raw | É semelhante a --query, mas mostra bytes brutos codificados em .proto detracing_service_state.proto. | 
| --help | -h  | Mostra textos de ajuda para a ferramenta perfetto. | 
Modo Light
A sintaxe geral para usar o perfetto no modo Light é esta:
 adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
             [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]...
             --out FILE
A tabela abaixo lista as opções disponíveis quando o perfetto é usado no
modo Light:
Tabela 2. Lista de opções da ferramenta perfetto
disponíveis ao usar o modo Light.
| Opção | Descrição | 
|---|---|
| --time TIME[s|m|h] | | Especifica a duração do trace em segundos, minutos ou horas.
     Por exemplo, --time 1mespecifica uma duração de trace de 1 minuto.
     A duração padrão é de 10 segundos. | 
| --buffer SIZE[mb|gb] | | Especifica o tamanho do buffer do anel em megabytes (mb) ou gigabytes (gb).
     O parâmetro padrão é --buffer 32mb. | 
| --size SIZE[mb|gb] | | Especifica o tamanho máximo do arquivo em megabytes (mb) ou gigabytes (GB). Por
padrão, perfettousa apenas o buffer de anel na memória. | 
| --app | -a | Nome do app Android (atrace) | 
Essas opções são seguidas por uma lista de especificadores de eventos:
Tabela 3. Lista de especificadores de eventos para o modo Light.
| Evento | Descrição | 
|---|---|
| ATRACE_CAT | Especifica as categorias do atracepara as quais você quer registrar um rastro.
    Por exemplo, o comando abaixo rastreia o gerenciador de janelas usando oatrace:
    adb shell perfetto --out FILE wm
    
    Para registrar outras categorias, consulte esta
     lista
       de categorias de  | 
| FTRACE_GROUP/FTRACE_NAME | Especifica os eventos do ftracepara os quais você quer registrar um rastro.
      Por exemplo, o comando abaixo rastreia eventossched/sched_switch:
      adb shell perfetto --out FILE sched/sched_switch
       | 
Modo Normal
A sintaxe geral para usar o perfetto no modo Normal é esta:
adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE
A tabela abaixo lista as opções disponíveis quando perfetto é usado no
modo Normal:
Tabela 4. Lista de opções da ferramenta perfetto
disponíveis ao usar o modo Normal.
| Opção | Descrição | 
|---|---|
| --config CONFIG_FILE | -c CONFIG_FILE | Especifica o caminho para um arquivo de configuração. No modo normal, algumas
     configurações podem ser codificadas em um buffer de protocolo de configuração. Esse arquivo
     precisa obedecer ao esquema de buffer de protocolo definido no trace_config.protodo AOSP.As fontes de dados são selecionadas e configuradas usando o
       membro  | 
| --txt | Instrui o perfettoa analisar o arquivo de configuração comopbtxt. Essa sinalização
      é destinada apenas a testes locais. Não é recomendável ativá-la
      para produção. | 
Origens de dados compatíveis
Esta seção descreve as diferentes origens que o perfetto usa para gerar
o rastro.
ftrace
A fonte de dados ftrace permite que o perfetto receba eventos do kernel.
Ative essa fonte configurando
ftrace_config
no DataSourceConfig.
Os eventos que podem ser ativados incluem:
- 
- 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
 
- Eventos do Filesystem: 
Dependendo do dispositivo, da versão do SO ou do kernel, mais eventos podem estar disponíveis. Para mais informações, consulte os protos de configuração.
Estatísticas de processo
A origem de dados de estatísticas do processo permite que você confira os contadores consultados sobre o sistema e os processos individuais.
Ative essa origem configurando process_stats_config
e sys_stats_config
na DataSourceConfig.
Os dados que o perfetto gera incluem:
- 
- /proc/meminfo
- /proc/vmstat
- /proc/stat
 
- 
- /proc/\<pid\>/status
- /proc/\<pid\>/oom_score_adj
 
Dependendo do dispositivo, da versão do SO e do kernel, mais eventos podem estar
disponíveis. Para saber mais, consulte os protótipos de configuração para sys_stats
e process_stats.
heapprofd
heapprofd permite criar uma amostra das causas do uso de memória nativa.
Ative essa fonte configurando heapprofd_config
no DataSourceConfig. Essa configuração produz ProfilePackets,
incluindo os frames Java da pilha de chamadas.
Outras informações sobre como usar heapprofd podem ser encontradas em
perfetto.dev (link em inglês).
Outras origens
Dependendo do dispositivo, do kernel e da versão do SO, mais origens de dados podem estar disponíveis. Para saber mais, consulte os protos de configuração da origem de dados.
Mais informações sobre perfetto podem ser encontradas em
perfetto.dev (link em inglês).
