Para começar a gravar um rastro, escolha uma configuração de gravação nos menus suspensos acima ou abaixo do CPU Profiler e clique em Record.
Interaja com o aplicativo e clique em Stop quando terminar. O criador de perfil exibe automaticamente as informações do rastro no painel, como mostrado na Figura 2.
- Intervalo selecionado: determina a parte do tempo gravado que você quer inspecionar no painel do rastro. No primeiro registro de um rastro, o CPU Profiler seleciona automaticamente toda a duração da gravação na linha do tempo da CPU. Para inspecionar apenas os dados de rastro de parte do intervalo de tempo gravado, clique nas arestas da região destacada e arraste-as.
- Seção de interação:exibe eventos de interação do usuário e ciclo de vida do app ao longo de uma linha do tempo.
- Seção Threads:mostra a atividade do estado da linha de execução (como em execução,
suspensão etc.) e Call Chart (ou gráfico de eventos de rastreamento no Rastreamento do sistema)
para cada linha do tempo em uma linha do tempo.
- Use atalhos de mouse e teclado para navegar na linha do tempo.
- Clique duas vezes no nome da linha de execução ou pressione Enter enquanto uma linha de execução é selecionada para abrir ou fechar uma linha.
- Selecione uma linha de execução para ver mais informações no painel de análise. Mantenha a tecla Shift ou Ctrl (Command no Mac) pressionada para selecionar várias linhas de execução.
- Selecione uma chamada de método, ou um evento de rastro no Rastreamento do sistema, para conferir mais informações no painel de análise.
- Painel de análise: mostra dados de rastro para o intervalo de tempo e a linha de execução ou a chamada de método que você selecionou. Nesse painel, é possível selecionar a forma de visualização de cada stack trace com as guias de análise. Você também pode escolher como quer medir o tempo de execução usando o menu suspenso de referência de tempo.
- Guias do painel de análise: escolha como mostrar detalhes de rastros. Para ver detalhes sobre cada opção, consulte Inspecionar rastros.
- Menu de referência temporal:selecione uma das seguintes opções para determinar como
as informações de tempo de cada chamada são medidas (compatível apenas com Sample/Trace
Java Methods):
- Wall clock time:as informações de tempo representam o tempo decorrido real.
- Thread time: as informações de tempo representam o tempo decorrido real menos qualquer parte desse tempo em que a linha de execução não consumiu recursos de CPU. Para qualquer chamada, o tempo da linha de execução será sempre menor ou igual ao tempo decorrido real. O uso do tempo da linha de execução oferece melhor compreensão da forma como a maior parte do uso real de CPU por uma linha de execução é consumida por determinado método ou função.
-
Filtro: filtra os dados de rastro por função, método, classe ou nome
do pacote. Por exemplo, se você quiser identificar rapidamente os dados de rastro relacionados a
uma chamada específica, digite o nome no campo
de pesquisa. Na guia Flame Chart, são destacadas as pilhas de chamadas
que incluem uma chamada, um pacote ou uma classe correspondente à consultas
de pesquisa. Nas guias Top Down e Bottom Up, essas pilhas
de chamada são priorizadas em relação a outros resultados de rastro. Também é possível ativar as
seguintes opções, marcando a caixa adequada ao lado do campo de pesquisa:
- Regex: use esta opção para incluir expressões regulares na sua pesquisa.
- Match case: use esta opção se sua pesquisa faz distinção entre maiúsculas e minúsculas.
- Aumentar zoom:pressione W ou role a roda do mouse enquanto mantém a tecla Ctrl (Command no Mac pressionada).
- Diminuir zoom:pressione S ou role a roda do mouse para trás enquanto mantém a tecla Ctrl (Command no Mac) pressionada.
- Mover para a esquerda:pressione A ou arraste o mouse para a direita enquanto mantém a tecla Espaço pressionada.
- Mover para a direita:pressione D ou arraste o mouse para a esquerda enquanto mantém a tecla Espaço pressionada.
- Expandir ou recolher uma linha de execução:clique duas vezes no nome da linha de execução ou pressione Enter enquanto uma linha de execução é selecionada.
Escolher uma configuração de gravação
Antes de começar a gravar informações de rastro, escolha a configuração de gravação adequada para as informações de criação de perfil que você quer capturar:
- Sample Java Methods: captura a pilha de chamadas do app em intervalos
frequentes durante a execução de código baseada em Java do app. O criador de perfil compara
conjuntos de dados capturados para conseguir informações de uso de tempo e uso de recursos sobre
a execução do código baseado em Java do app.
Uma questão inerente ao rastro baseado em amostra é que, se o app entrar em um método após a captura da pilha de chamadas e sair desse método antes da próxima captura, essa chamada ao método não será registrada pelo criador de perfil. Se você tiver interesse em métodos de rastro com ciclos de vida curtos, use o rastreamento instrumentado.
- Trace Java Methods: instrumenta seu app durante a execução para gravar um
carimbo de data/hora no início e no término de cada chamada de método. Os carimbos de data/hora são
coletados e comparados para gerar dados de rastros de método, incluindo informações
sobre tempo e uso de CPU.
Observe que a sobrecarga associada à instrumentação de cada método afeta a performance do ambiente de execução e pode influenciar os dados de criação do perfil, o que é ainda mais perceptível para métodos com ciclos de vida relativamente curtos. Além disso, se o app executa um grande número de métodos em um curto espaço de tempo, o criador de perfil pode exceder rapidamente o limite de tamanho de arquivo e deixar de gravar outros dados de rastro.
- Sample C/C++ Functions: captura os traços amostrados das linhas de execução nativas
do app. Para usar essa configuração, é necessário implantar seu app em um dispositivo
com o Android 8.0 (API de nível 26) ou versão mais recente.
Internamente, essa configuração usa
simpleperf
para rastrear o código nativo do seu app. Caso queira especificar mais opções parasimpleperf
, por exemplo, amostragem de CPUs específicas do dispositivo ou especificação de durações de amostragem com alta precisão, você pode usarsimpleperf
na linha de comando. - Trace System Calls: captura dados detalhados que permitem
inspecionar como o app interage com os recursos do sistema. Você pode inspecionar os tempos
e as durações exatas dos estados da linha de execução, visualizar onde os gargalos
da CPU estão em todos os núcleos e adicionar eventos de rastro personalizados para analisar.
Essas informações podem ser essenciais para solucionar problemas
de desempenho. Para usar essa configuração, é necessário implantar seu app em um dispositivo
com o Android 7.0 (nível 24 da API) ou uma versão mais recente.
Ao usar essa configuração de rastro, você pode marcar visualmente rotinas de código importantes na linha do tempo do criador de perfil instrumentando seu código. Para instrumentar o código C/C++, use a API de rastreamento nativa fornecida por
trace.h
. Para instrumentar o código Java, use a classeTrace
. Para mais informações, consulte Instrumentar o código do app.Essa configuração de rastro é criada no
systrace
. É possível usar o utilitário de linha de comandosystrace
para especificar opções além das fornecidas no CPU Profiler. Os outros dados no nível do sistema fornecidos porsystrace
podem ajudar a inspecionar processos nativos do sistema e a solucionar problemas de frames perdidos ou atrasados.Em dispositivos com o Android 9 (nível 28 da API) ou versões mais recentes, você pode usar um app chamado Rastreamento do sistema para registrar os rastros do sistema em um dispositivo.
Criar, editar ou ver uma configuração de gravação
Para criar, editar e visualizar configurações de gravação, abra a caixa de diálogo CPU Recording Configurations selecionando Edit configurations no menu suspenso de configurações de gravação, na parte de cima do CPU Profiler.
Para visualizar as definições de uma configuração de gravação existente, selecione-a no painel esquerdo da caixa de diálogo CPU Recording Configurations.
Para criar uma nova configuração de gravação, siga as seguintes etapas:
- Clique em Add no canto superior esquerdo da caixa de diálogo. Isso cria uma nova configuração com algumas definições padrão.
- Atribua um nome à configuração.
- Selecione uma Trace Technology (tecnologia de rastro).
- Nas configurações de gravação de amostra, especifique o Sampling interval (intervalo de amostragem) em microssegundos (μs). Esse valor representa a duração entre cada amostra da pilha de chamadas do app. Quanto menor o intervalo especificado, mais rápido você alcançará o limite de tamanho de arquivo para os dados gravados.
- Especifique o File size limit (limite de tamanho do arquivo) em megabytes (MB) para os dados gravados
programados no dispositivo conectado. Quando você interromper a gravação, o Android
Studio vai analisar e mostrar esses dados na janela do criador de perfil. Se você
aumentar o limite e gravar uma grande quantidade de dados, o Android Studio demorará
muito mais para analisar o arquivo e poderá parar de responder.
Observação: se você usar um dispositivo conectado executando o Android 8.0 (nível 26 da API) ou versões mais recentes, não haverá limite para o tamanho do arquivo dos dados de rastro, e esse valor será ignorado. No entanto, ainda será necessário tomar cuidado com a quantidade de dados coletada pelo dispositivo em cada gravação. O Android Studio pode ter dificuldades para analisar arquivos de rastro grandes. Por exemplo, se você estiver gravando um rastro amostrado com um intervalo de amostragem curto ou um rastro instrumentado enquanto o app chama vários métodos em um curto período, serão gerados rapidamente arquivos de rastro grandes.
- Para aceitar as mudanças e continuar mudando outras configurações, clique em Apply. Clique em OK para aceitar todas as mudanças aplicadas e fechar a caixa de diálogo.
Gravar a atividade da CPU com a API Debug
É possível usar a API Debug
para que seu app
possa iniciar e interromper a gravação da atividade da CPU no CPU Profiler.
O CPU Profiler começa a gravar quando o app chama
startMethodTracing(String tracePath)
e interrompe a gravação quando o app chama
stopMethodTracing()
. Enquanto
grava a atividade da CPU que acionou o uso dessa API, o CPU Profiler mostra a
API Debug como a configuração de gravação de CPU ativa.
Para controlar a gravação da atividade da CPU com a API Debug
, implante seu
app instrumentado em um dispositivo com o Android 8.0 (API de nível 26) ou versões mais recentes.
A gravação iniciada pela API tem suporte de apps com perfil, mas os criadores de perfil do Android Studio
exigem um app depurável para mostrar o status da gravação na IU.
Importante:a
API Debug
precisa ser usada
separadamente dos outros meios de iniciar e interromper a gravação da atividade
da CPU, como os botões na interface gráfica do usuário do CPU Profiler e
a configuração na configuração de gravação automática na inicialização
do app.
Devido ao limite de tamanho do buffer de 8 MB, o método
startMethodTracing(String tracePath)
na API
Debug
foi projetado para intervalos curtos ou situações em que é
difícil iniciar/parar a gravação manualmente. Para períodos de gravação mais longos, use
a IU do criador de perfil no Android Studio.
Para mais informações, consulte Gerar registros de rastreamento com a instrumentação do app.
Gravar a atividade da CPU durante a inicialização do app
Para começar a gravar a atividade da CPU automaticamente durante a inicialização do app, siga estas etapas:
- Selecione Run > Edit Configurations.
- Na guia Profiling, marque a caixa ao lado de Start recording a method trace on startup.
- Selecione uma configuração de gravação da CPU no menu.
- Clique em Aplicar.
- Implante o app em um dispositivo com o Android 8.0 (nível 26 da API) ou mais recente, selecionando Run > Profile.