O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

perfetto

O perfetto é uma ferramenta que permite coletar informações de desempenho dos seus dispositivos Android usando o Android Debug Bridge (ADB). perfetto usa várias origens para coletar rastros de desempenho do dispositivo, como, por exemplo:

  • ftrace para informações do kernel
  • atrace para anotações de espaço do usuário em serviços e apps
  • heapprofd para informações de uso de memória nativa por serviços e apps

Esta página descreve como chamar perfetto e configurá-lo para gerar a saída que você quer.

Sintaxe

Esta seção descreve como usar o ADB para chamar perfetto e gerar um trace.

Seleção da origem de dados

O perfetto inclui os dois seguintes modos que determinam as origens de dados usadas para registrar o rastro:

  • modo light: pode selecionar apenas um subconjunto de origens de dados, especificamente, atrace e ftrace. Contudo, esse modo oferece uma interface semelhante ao systrace.
  • mode normal: a configuração desse modo vem em um buffer de protocolo. Ele permite que você aproveite muito mais a potência do perfetto, usando origens de dados diferentes de atrace e ftrace.

Esta seção descreve a sintaxe que o perfetto precisa para gerar um rastro usando cada um dos modos descritos acima.

Opções gerais

A tabela a seguir lista as opções disponíveis quando o perfetto é usado em qualquer um dos modos.

Opção Descrição
--background | -d O Perfetto sai imediatamente da interface da linha de comando e continua registrando seu rastro em segundo plano.
--out OUT_FILE | -o OUT_FILE Especifica o caminho desejado para o arquivo de trace de saída ou para stdout. perfetto grava a saída no arquivo descrito nas sinalizações acima. O formato de saída é compilado com o formato definido no trace.proto do AOSP (link em inglês).
--dropbox TAG Faz o upload do rastro pela API DropBoxManager usando a tag especificada.
--no-guardrails Desativa a proteção contra usa excessivo de recursos ao ativar a sinalização --dropbox durante os testes.
--reset-guardrails Redefine o estado persistente das proteções e saídas (para testes).
--query Consulta o estado do serviço e exibe em um texto legível.
--query-raw É semelhante a --query, mas exibe bytes brutos codificados em .proto de tracing_service_state.proto.
--help | -h Exibe textos de ajuda para a ferramenta perfetto.

Modo Light

A sintaxe geral para usar o perfetto no modo light é a seguinte:

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

A tabela a seguir lista as opções disponíveis quando o perfetto é usado no modo light.

Opção Descrição
--time TIME[s|m|h] | -t TIME[s|m|h] Especifica a duração do trace em segundos, minutos ou horas. Por exemplo, --time 1m especifica uma duração de trace de 1 minuto. A duração padrão é de 10 segundos.
--buffer SIZE[mb|gb] | -b 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] | -s SIZE[mb|gb] Especifica o tamanho máximo do arquivo em megabytes (mb) ou gigabytes (GB). Por padrão, perfetto usa apenas o buffer de anel na memória.

A lista a seguir mostra especificadores de eventos.

Evento Descrição
ATRACE_CAT Especifica as categorias do atrace para as quais você quer registrar um trace. Por exemplo, o comando a seguir rastreia o gerenciador de janelas usando o atrace:

    adb shell perfetto --out FILE wm
    

Para registrar outras categorias, consulte esta lista de categorias de atrace (link em inglês).

FTRACE_GROUP/FTRACE_NAME Especifica os eventos do ftrace para os quais você quer registrar um trace. Por exemplo, o comando a seguir rastreia eventos sched/sched_switch:

      adb shell perfetto --out FILE sched/sched_switch
      

Modo normal

A sintaxe geral para usar perfetto no modo normal é a seguinte:

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

A tabela a seguir lista as opções disponíveis quando perfetto é usado no 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.proto do AOSP (link em inglês).

As origens de dados são selecionadas e configuradas usando o membro DataSourceConfig de TraceConfig, conforme definido no data_source_config.proto do AOSP (link em inglês).

--txt Instrui o perfetto a analisar o arquivo de configuração como pbtxt. Essa sinalização é experimental e 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 origem de dados ftrace permite que o perfetto receba eventos do kernel.

Você pode ativar essa origem configurando ftrace_config no DataSourceConfig (link em inglês).

Os eventos que podem ser ativados incluem (links em inglês):

  • Programar atividade:

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

  • Eventos do ATrace

Dependendo do dispositivo, da versão do SO e do kernel, mais eventos podem estar disponíveis. Para ver mais informações, consulte os protos de configuração (link em inglês).

Estatísticas de processo

A origem de dados de estatísticas do processo permite que você veja os contadores consultados sobre o sistema e os processos individuais.

Você pode ativar essa origem configurando process_stats_config e sys_stats_config no DataSourceConfig (links em inglês).

Os dados que o profetto gera incluem (links em inglês):

Dependendo do dispositivo, da versão do SO e do kernel, mais eventos podem estar disponíveis. Para saber mais, consulte os protos de configuração de sys_stats e process_stats (links em inglês).

Heapprofd

O Heapprofd permite que você gere uma amostra das causas do uso da memória nativa.

É possível ativar essa origem configurando heapprofd_config no DataSourceConfig (link em inglês).

Isso produz ProfilePackets. Isso inclui os frames de Java do callstackst.

Mais informações sobre como usar o 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).