Filtrar o gráfico de chama
O Cloud Profiler permite adicionar filtros para controlar como as informações nos perfis selecionados são exibidas. Por exemplo, você pode adicionar um filtro para ocultar determinados frames ou pilhas de chamadas. Adicionar e remover filtros não muda o conjunto de perfis selecionados.
Cada filtro é especificado por um FILTER-OPTION
predefinido que é pareado com um VALUE
definido pelo usuário:
[FILTER-OPTION] : [VALUE]
Cada filtro adicionado é exibido na barra de filtros.
Neste exemplo, há um filtro que exibe Metric : Bytes
:
O Profiler cria automaticamente um filtro com um FILTER-OPTION
de Metric
e um VALUE
com base no tipo de perfil selecionado.
Você pode alterar VALUE
para alguns tipos de perfil. Não é possível remover esse filtro.
Para adicionar um filtro, use uma das abordagens a seguir:
- Clique em Filtros filter_list, selecione uma opção da lista e insira o valor.
- Clique no texto cinza Adicionar filtro de dados do perfil na barra de filtros e, em seguida, insira a opção e o valor do filtro.
- Para as opções de filtro Foco, Mostrar a partir do frame e Mostrar pilhas, também é possível colocar o ponteiro no frame e selecionar a opção na dica dele.
Para remover um filtro, clique em Fechar close no filtro.
Ao preparar os dados para serem exibidos, o Profiler procura por correspondências entre um frame e um filtro.
Quando ocorre uma correspondência, o Profiler usa o FILTER-OPTION
para determinar qual ação deve ser executada. Um frame corresponde ao filtro quando o nome da função do frame ou o nome do arquivo da origem da função contém VALUE
.
Uma comparação que diferencia maiúsculas de minúsculas é realizada.
Por exemplo, se o filtro for Hide frames : oo
, os frames com funções chamadas foo
, foo1
e busyloop
serão ocultadas do gráfico de chama.
Métrica
Para definir o modo de agregação do tipo de perfil, use o filtro Métrica. Por exemplo, se você selecionar o tipo de perfil Heap, terá a opção de visualizar os dados em termos de Bytes e Objetos.
As opções disponíveis para o filtro Métrica dependem da linguagem de programação e do Tipo de perfil selecionado:
- Para perfis Tempo de CPU, a única opção é Tempo de CPU.
Para perfis Heap, as opções são:
- Bytes
- Objetos
Para perfis Heap alocada, as opções são:
- Total de bytes alocados
- Total de objetos alocados
Para perfis Tempo decorrido, as opções são:
- Count
- Tempo decorrido
Para perfis Linhas de execução, a única opção é Goroutine.
Para perfis Contenção, as opções são:
- Atraso
- Contenções
Para mais informações sobre tipos de métricas de criação de perfil, consulte os Conceitos de criação de perfil.
Por exemplo, a captura de tela a seguir mostra o consumo de CPU de um programa:
Aqui, você pode ver que a rotina busyloop
chama foo1
e foo2
, que chamam várias outras rotinas. É possível adicionar filtros para restringir ainda mais o gráfico somente aos dados de interesse.
Foco
Quando o filtro Foco é usado, uma única função é selecionada, e o gráfico de chama exibe todos os caminhos de código que entram e saem dessa função específica.
Saiba mais sobre como focar o gráfico e interpretar os resultados em Como focar o gráfico de chama.
Mostrar pilhas
Para exibir todas as pilhas de chamadas com um frame que corresponde ao valor do filtro e ocultar todas as outras, use o filtro Mostrar pilhas. O gráfico mostra os autores da chamada e o que foi chamado com relação à função. Ou seja, tudo que chama a função correspondente e tudo que é chamado.
Esse filtro executa um teste de substring que diferencia maiúsculas de minúsculas. Uma correspondência ocorrerá se a função do frame contiver o valor do filtro.
Para restringir o gráfico de uso da CPU do exemplo anterior para mostrar apenas as pilhas de chamadas que envolvem a função foo1
, defina um filtro Mostrar pilhas para foo1
:
Ocultar pilhas
Oculte todas as pilhas de chamadas com um frame que corresponde ao valor do filtro. Esse filtro geralmente é útil quando você quer ocultar pilhas não interessantes. Por exemplo, com aplicativos Java, é comum adicionar um filtro Hide stacks: unsafe.park
.
Esse filtro executa um teste de substring que diferencia maiúsculas de minúsculas. Uma correspondência ocorrerá se a função do frame contiver o valor do filtro.
Mostrar a partir do frame
Para exibir todas as pilhas de chamadas, começando pelo frame que corresponde ao valor do filtro, e ocultar todas as outras, use o filtro Mostrar a partir do frame. O gráfico resultante mostra as pilhas de chamadas da função nomeada para baixo. Esse filtro é útil se a função é chamada de muitos lugares, e você quer ver o consumo total que pode ser atribuído a ela.
Por exemplo, para mostrar apenas chamadas originadas da função baz
, defina um filtro Mostrar a partir do frame para baz
:
Esse filtro executa um teste de substring que diferencia maiúsculas de minúsculas. Uma correspondência ocorrerá se a função do frame contiver o valor do filtro.
Ocultar frames
Para ocultar a exibição de todos os frames que correspondem ao valor do filtro, use Ocultar frames. O gráfico mostra os autores da chamada da função, além de tudo que é chamado. Use o filtro para remover do gráfico frames não relevantes.
Por exemplo, para ocultar os frames de foo1
e foo2
, defina um filtro Ocultar frames para foo
. foo1
e foo2
são correspondentes. Portanto, ambas são removidas do gráfico. Como elas chamam as rotinas bar
e baz
, os dados de cada uma dessas funções são agregados.
Esse filtro executa um teste de substring que diferencia maiúsculas de minúsculas. Uma correspondência ocorrerá se a função do frame contiver o valor do filtro.
Destacar
Para destacar todos os frames com nomes de função que correspondem ao valor do filtro, use o filtro Destacar. A função fica no modo de cor normal, mas as sequências de chamada têm cores mais suaves.
Por exemplo, veja um gráfico sem destaques:
Veja o mesmo gráfico com destaque solicitado para a função baz
:
Esse filtro executa um teste de substring que diferencia maiúsculas de minúsculas. Uma correspondência ocorrerá se a função do frame contiver o valor do filtro.
Modo de cor
Por padrão, a cor do frame corresponde ao pacote da função quando possível. Se as informações do pacote não estiverem disponíveis, como acontece com o Node.js, os nomes dos arquivos de origem serão usados para colorir os blocos da função. Na configuração padrão, há transição de um pacote para o outro quando as cores dos frames da pilha de chamadas mudam. A opção padrão corresponde ao filtro Modo de cor com um valor Nome.
Para colorir os frames no gráfico em degradê de acordo com o consumo de uma função e os filhos dela, adicione um filtro Modo de cor com o valor Total. Se uma função for chamada por meio de várias pilhas de chamadas, a cor será determinada pelo consumo da métrica de todas as pilhas.
Por exemplo, main
e busyloop
estão em vermelho. Esses dois frames consomem mais tempo de CPU. Os frames rotulados como foo2
e baz
são um laranja profundo, enquanto o frame foo1
é um laranja mais claro. Os frames para bar
e load
são os mais claros. Este gráfico de chama ilustra que foo2
consome mais tempo de CPU do que foo1
, mas menos que busyloop
:
Para colorir os frames no gráfico em degradê de acordo com o consumo de métrica da função, mas não incluir o dos filhos dela, adicione um filtro Modo de cor com o valor Só para mim.
Por exemplo, esse filtro mostra que a função baz
consome mais tempo de CPU do que qualquer outra função:
A seguir
- Focar o gráfico de chama em uma função.
- Ver tendências históricas.
- Comparar perfis.
- Fazer o download dos dados do perfil.