Filtre o gráfico de rastreio em pilhas sobrepostas

O Cloud Profiler permite-lhe adicionar filtros para controlar a forma como as informações nos perfis selecionados são apresentadas. Por exemplo, pode adicionar um filtro para ocultar frames ou pilhas de chamadas específicos. Adicionar e remover filtros não altera o conjunto de perfis selecionados.

Cada filtro é especificado por um FILTER-OPTION predefinido que está sincronizado com um VALUE definido pelo utilizador:

[FILTER-OPTION] : [VALUE]

Cada filtro que adicionar é apresentado na barra de filtros. Neste exemplo, existe um filtro que apresenta Metric : Bytes:

Mostrar um filtro com a opção de métrica e valor de bytes.

O criador de perfis cria automaticamente um filtro com um FILTER-OPTION de Metric e um VALUE com base no tipo de perfil selecionado. Pode alterar VALUE para alguns tipos de perfis. Não pode remover este filtro.

Para adicionar um filtro, use uma das seguintes abordagens:

  • Clique em Filtros , selecione uma opção da lista e, de seguida, introduza o valor.
  • Clique no texto cinzento Adicionar filtro de dados do perfil na barra de filtros e, de seguida, introduza a opção e o valor do filtro.
  • Para as opções de filtro Foco, Mostrar a partir da moldura e Mostrar conjuntos, também pode colocar o ponteiro na moldura e, em seguida, selecionar a opção na dica de ferramenta da moldura.

Para remover um filtro, clique em Fechar no filtro.

Ao preparar os dados para apresentação, o Profiler procura correspondências entre um frame e um filtro. Quando ocorre uma correspondência, o Gerador de perfis usa o FILTER-OPTION para determinar que ação executar. Um frame corresponde ao filtro quando o nome da função do frame ou o nome do ficheiro da origem da função contém VALUE. É feita uma comparação sensível a maiúsculas e minúsculas. Por exemplo, se o filtro for Hide frames : oo, os frames com funções denominadas foo, foo1 e busyloop correspondentes são ocultados do gráfico de chamas.

Métrica

Para definir o modo de agregação do tipo de perfil, use o filtro Métrica. Por exemplo, se selecionar um tipo de perfil Heap, tem 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 de tempo da CPU, a única opção é tempo da CPU.
  • Para perfis do Heap, as opções são:

    • Bytes
    • Objetos
  • Para perfis de Allocated Heap, as opções são:

    • Total de bytes alocados
    • Total de objetos alocados
  • Para perfis de Tempo real, as opções são:

    • Contagem
    • Tempo total
  • Para perfis do Threads, a única opção é Goroutine.

  • Para perfis de Contention, as opções são:

    • Atraso
    • Contestações

Para mais informações acerca dos tipos de métricas de criação de perfis, consulte o artigo Conceitos de criação de perfis.

Por exemplo, a captura de ecrã seguinte mostra o consumo da CPU de um programa:

Gráfico do Profiler para a utilização da CPU

Aqui, pode ver que a rotina busyloop chama foo1 e foo2, que, por sua vez, chamam várias outras rotinas. Pode adicionar filtros para restringir ainda mais o gráfico apenas aos dados de interesse.

Foco

Quando usa o filtro Foco, seleciona uma única função e o flame graph apresenta os caminhos de código que entram e saem dessa função específica.

Para ver detalhes sobre como focar o gráfico e interpretar os resultados, consulte o artigo Focar o gráfico de chamas.

Mostrar conjuntos

Para apresentar todas as sequências de chamadas que contêm um frame que corresponde ao valor do filtro e ocultar todas as outras sequências de chamadas, use o filtro Mostrar sequências. O gráfico mostra os autores das chamadas e os destinatários das chamadas da função, ou seja, tudo o que chama a função correspondente e tudo o que esta chama.

Este filtro executa um teste de substring sensível a maiúsculas e minúsculas. Ocorre uma correspondência se a função de frames contiver o valor do filtro.

Para restringir o gráfico de utilização 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 perfis para a utilização da CPU filtrado com a opção Mostrar rastreios

Oculte conjuntos

Ocultar todas as sequências de chamadas que contêm uma frame que corresponde ao valor do filtro. Este filtro é frequentemente útil quando quer ocultar sequências de fotos pouco interessantes. Por exemplo, com aplicações Java, é comum adicionar um filtro Hide stacks: unsafe.park.

Este filtro executa um teste de substring sensível a maiúsculas e minúsculas. Ocorre uma correspondência se a função de frames contiver o valor do filtro.

Mostrar a partir do frame

Para apresentar todas as sequências de chamadas, começando pelo frame que corresponde ao valor do filtro, e ocultar todas as outras sequências de chamadas, use o filtro Mostrar a partir do frame. O gráfico resultante mostra as pilhas de chamadas da função com nome para baixo. Este filtro é útil se a sua função for chamada a partir de muitos locais e quiser ver o consumo total atribuível à mesma.

Por exemplo, para mostrar apenas chamadas originadas da função baz, defina um filtro Mostrar a partir de frame para baz:

Gráfico do Profiler para a utilização da CPU filtrado com a opção Mostrar a partir da frame

Este filtro executa um teste de substring sensível a maiúsculas e minúsculas. Ocorre uma correspondência se a função de frames contiver o valor do filtro.

Oculte frames

Para ocultar da vista todos os frames que correspondem ao valor do filtro, use o filtro Ocultar frames. O gráfico mostra os autores da chamada da função e todos os destinatários da chamada da função são recolhidos em conjunto. Este filtro é útil para remover frames irrelevantes do gráfico.

Por exemplo, para ocultar as frames de foo1 e foo2, defina um filtro de ocultação de frames para foo. Ambos os valores foo1 e foo2 correspondem, pelo que ambos são removidos do gráfico. Uma vez que ambas chamam as rotinas bar e baz, os dados de cada uma dessas funções são agregados.

Gráfico do Profiler para a utilização da CPU filtrado com a opção Ocultar frames

Este filtro executa um teste de substring sensível a maiúsculas e minúsculas. Ocorre uma correspondência se a função de frames contiver o valor do filtro.

Realce

Para realçar todos os frames cujos nomes de funções correspondam ao valor do filtro, use o filtro Realçar. A função permanece no modo de cores normal, mas as sequências de chamadas são coloridas em tons mais suaves.

Por exemplo, aqui está um gráfico sem realce:

Gráfico de criação de perfis sem realce

Aqui está o mesmo gráfico com o realce pedido para a função baz:

Gráfico de criação de perfis com realce

Este filtro executa um teste de substring sensível a maiúsculas e minúsculas. Ocorre uma correspondência se a função de frames contiver o valor do filtro.

Modo de cor

Por predefinição, a cor da moldura corresponde, sempre que possível, ao pacote da função. Se as informações do pacote não estiverem disponíveis, como no caso do Node.js, os nomes dos ficheiros de origem são usados para colorir os blocos de funções. Com a predefinição, uma alteração na cor de um frame da pilha de chamadas significa uma transição de um pacote para outro. A opção predefinida corresponde ao filtro Modo de cor com um valor de Nome.

Para colorir os frames no gráfico de chamas pelo consumo de uma função e dos respetivos filhos, adicione um filtro Modo de cor com o valor Total. Se uma função for chamada através de várias pilhas de chamadas, a cor é determinada pelo consumo de métricas para todas as pilhas de chamadas. Por exemplo, main e busyloop estão a vermelho. Estes dois frames consomem a maior parte do tempo do CPU. Os frames etiquetados como foo2 e baz são de um laranja escuro, enquanto o frame etiquetado como foo1 é de um laranja mais claro. Os frames para bar e load são os mais leves. Este gráfico de chamas ilustra que o foo2 consome mais tempo de CPU do que o foo1, mas menos do que o busyloop:

Total do modo de cor

Para colorir os frames no gráfico de chamas pelo consumo de métricas da função, mas excluir o consumo de métricas dos respetivos filhos, adicione um filtro de Modo de cor com o valor de Próprio. Por exemplo, este filtro mostra que a função baz consome mais tempo da CPU do que qualquer outra função:

Modo de cor

O que se segue?