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:

Mostrar um filtro com a opção de métrica e valor de 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 , 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 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:

Gráfico do criador de perfil sobre uso da CPU

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:

Gráfico do criador de perfil sobre uso da CPU filtrado com "Mostrar pilhas"

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:

Gráfico do criador de perfil sobre uso da CPU filtrado com "Mostrar a partir do frame"

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.

Gráfico do criador de perfil sobre uso da CPU filtrado com "Ocultar frames"

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:

Gráfico do criador de perfil sem destaque

Veja o mesmo gráfico com destaque solicitado para a função baz:

Gráfico do criador de perfil com destaque

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:

Modo de cor "Total"

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:

Modo de cor "Só para mim"

A seguir