Navegar por um relatório do Systrace

Este guia explica como navegar por um relatório do Systrace e interpretá-lo. Para interpretar um relatório do Perfetto, consulte a documentação do Trace Processor (link em inglês).

Elementos de um relatório típico

O Systrace gera um arquivo HTML de saída que contém uma série de seções. O relatório lista as linhas de execução de cada processo. Se uma determinada linha de execução renderizar frames de IU, o relatório também indicará os frames renderizados ao longo da linha do tempo. A passagem do tempo avança para frente à medida que você se desloca da esquerda para a direita no relatório.

De cima para baixo, o relatório contém as seções a seguir.

Interações do usuário

A primeira seção contém barras que representam interações do usuário específicas no seu app ou jogo, como tocar na tela do dispositivo. Essas interações servem como marcadores de tempo úteis.

Atividade da CPU

A próxima seção mostra barras que representam a atividade da linha de execução dentro de cada CPU. As barras mostram a atividade da CPU em todos os apps, incluindo seu app ou jogo.

A seção de atividade da CPU pode ser expandida, permitindo que você confira a frequência do clock de cada CPU. A Figura 1 mostra um exemplo de uma seção de atividade da CPU recolhida, e a Figura 2 mostra uma versão expandida que exibe a frequência do relógio:

Captura de tela do relatório Systrace
Figura 1. Amostra de atividade da CPU (visualização recolhida) em um relatório do Systrace

Captura de tela do relatório Systrace
Figura 2. Exemplo de atividade da CPU (visualização expandida) que mostra a frequência do relógio da CPU em um relatório do Systrace

Eventos do sistema

Os histogramas nesta seção mostram eventos específicos no nível do sistema, como contagens de textura e o tamanho total de objetos específicos.

Vale a pena consultar mais atentamente o histograma chamado SurfaceView. A contagem representa o número de buffers de frames compostos que foram passados para o pipeline de exibição e estão aguardando para serem exibidos na tela do dispositivo. Como a maioria dos dispositivos tem buffer duplo ou triplo, essa contagem é quase sempre 0, 1 ou 2.

Outros histogramas que representam o processo Surface Flinger, incluindo eventos de VSync e trabalho de troca de linhas de execução de IU, aparecem na Figura 3:

Captura de tela do relatório Systrace
Figura 3. Exemplo de gráfico do Surface Flinger em um relatório do Systrace.

Frames de exibição

Esta seção, geralmente a mais alta do relatório, mostra uma linha multicolorida seguida por pilhas de barras. Essas formas representam o status e a pilha de frames de uma linha de execução específica que foi criada. Cada nível da pilha representa uma chamada para beginSection() ou o início de um evento de geração de rastros personalizado definido para seu app ou jogo.

A linha multicolorida acima de cada pilha de barras representa o conjunto de status de uma linha de execução específica ao longo do tempo. Cada segmento da linha pode conter uma das seguintes cores:

Verde: em execução
A linha de execução está concluindo um trabalho relacionado a um processo ou está respondendo a uma interrupção.
Azul: pronto para execução
A linha de execução está disponível para execução, mas não está programada no momento.
Branco: em suspensão
A linha de execução não tem nenhum trabalho a fazer, talvez porque está bloqueada em um bloqueio mutex.
Laranja: em suspensão ininterrupta
A linha de execução está bloqueada na E/S ou está aguardando a conclusão de uma operação de disco.
Roxo: em suspensão passível de interrupção
A linha de execução está bloqueada em outra operação de kernel, normalmente no gerenciamento de memória.

Atalhos do teclado

A tabela a seguir lista os atalhos de teclado disponíveis durante a visualização de um relatório do Systrace:

Chave Descrição
W Aumenta o zoom na linha do tempo do rastro.
A Move para a esquerda a linha do tempo do rastro.
S Diminui o zoom na linha do tempo do rastro.
D Move para a direita a linha do tempo do rastro.
E Centraliza a linha do tempo do rastro na posição atual do mouse.
M Enquadra a seleção atual.
1 Altera o modelo de seleção ativo para o modo "selecionar". Corresponde ao primeiro botão na barra de ferramentas do seletor do mouse (veja a imagem à direita). Captura de tela da barra de ferramentas do seletor do mouse no relatório Systrace
2 Altera o modelo de seleção ativo para o modo "mover". Corresponde ao segundo botão na barra de ferramentas do seletor do mouse (veja a imagem à direita). Captura de tela da barra de ferramentas do seletor do mouse no relatório Systrace
3 Altera o modelo de seleção ativo para o modo "zoom". Corresponde ao terceiro botão na barra de ferramentas do seletor do mouse (veja a imagem à direita). Captura de tela da barra de ferramentas do seletor do mouse no relatório Systrace
4 Altera o modelo de seleção ativo para o modo "período". Corresponde ao quarto botão na barra de ferramentas do seletor do mouse (veja a imagem à direita). Captura de tela da barra de ferramentas do seletor do mouse no relatório Systrace
G Exibe a grade no início da tarefa selecionada.
Shift + G Exibe a grade no final da tarefa selecionada.
Seta para a esquerda Seleciona o evento anterior na linha do tempo selecionada.
Seta para a direita Seleciona o próximo evento na linha do tempo selecionada.

Investigar problemas de desempenho

Ao interagir com um relatório do Systrace, você pode inspecionar o uso da CPU do dispositivo durante o processo de registro. Se precisar de ajuda para navegar pelo relatório HTML, consulte a seção de atalhos do teclado ou clique no botão ? no canto superior direito do relatório.

As seções a seguir explicam como inspecionar as informações no relatório para encontrar e corrigir problemas de desempenho.

Identificar problemas de desempenho

Ao navegar por um relatório do Systrace, você pode identificar problemas de desempenho com mais facilidade realizando uma ou mais das ações a seguir:

  • Selecionar um intervalo de tempo de interesse desenhando um retângulo ao redor do intervalo.
  • Marcar ou destacar uma área problemática usando a ferramenta de régua.
  • Exibir cada operação de atualização da tela clicando em View Options > Highlight VSync.

Inspecionar frames e alertas da IU

Conforme mostrado na Figura 4, um relatório do Systrace lista cada processo que renderiza os frames da IU e indica cada frame renderizado ao longo da linha do tempo. Os frames renderizados dentro dos 16,6 milissegundos necessários para manter um nível estável de 60 quadros por segundo são indicados com círculos de frame verdes. Os frames que levam mais de 16,6 milissegundos para renderizar são indicados com círculos de frame amarelos ou vermelhos.

Visualização com
  zoom de um frame
Figura 4. O Systrace é exibido após aumentar o zoom em um frame de longa duração

Ao clicar no círculo de um frame, ele é destacado e fornece mais informações sobre o trabalho realizado pelo sistema para renderizar esse frame, incluindo alertas. O relatório também mostra os métodos que o sistema estava executando ao renderizar o frame. Você pode investigar esses métodos para determinar possíveis causas de instabilidade da IU.

Frame
  problemático selecionado
Figura 5. Ao selecionar o frame problemático, um alerta aparece abaixo do relatório de geração de rastros para identificar o problema

Após selecionar um frame lento, você poderá ver um alerta no painel inferior do relatório. O alerta exibido na Figura 5 mostra que o principal problema com o frame é que muito tempo é usado na reciclagem e revinculação do ListView. Há links para os eventos relevantes no rastro que explicam melhor o que o sistema estava fazendo durante esse período.

Para ver cada alerta que a ferramenta detectou no seu rastro, bem como o número de vezes que o dispositivo acionou cada alerta, clique na guia Alerts à direita da janela, como mostra a Figura 6. O painel Alerts ajuda a visualizar quais problemas ocorrem no rastro e com que frequência eles contribuem para a instabilidade. Você pode considerar esse painel como uma lista de bugs a serem corrigidos. Muitas vezes, uma pequena mudança ou melhoria em uma área pode remover um conjunto inteiro de alertas.

Guia "Alert" exibida
Figura 6. Ao clicar no botão Alert, a guia de alertas é revelada

Se você notar que muito trabalho está sendo realizado na linha de execução de IU, use uma das abordagens a seguir para ajudar a determinar quais métodos estão consumindo muito tempo de CPU: