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
:
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 filter_list, 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 close 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:
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
:
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
:
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.
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:
Aqui está o mesmo gráfico com o realce pedido para a função baz
:
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
:
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:
O que se segue?
- Focar o gráfico de chamas numa função.
- Veja tendências históricas.
- Compare perfis.
- Transfira dados do perfil.