Filtrare il grafico a fiamme

Cloud Profiler ti consente di aggiungere filtri per controllare la modalità di visualizzazione delle informazioni nei profili selezionati. Ad esempio, puoi aggiungere un filtro per nascondere determinati frame o stack di chiamate. L'aggiunta e la rimozione di filtri non modifica l'insieme di profili selezionati.

Ogni filtro è specificato da un FILTER-OPTION predefinito accoppiato con un VALUE definito dall'utente:

[FILTER-OPTION] : [VALUE]

Ogni filtro aggiunto viene visualizzato nella barra dei filtri. In questo esempio, è presente un filtro che mostra Metric : Bytes:

Mostra un filtro con la possibilità di scegliere la metrica e il valore in byte.

Profiler crea automaticamente un filtro con un valore FILTER-OPTION di Metric e un VALUE in base al tipo di profilo selezionato. Puoi modificare VALUE per alcuni tipi di profilo. Non puoi rimuovere questo filtro.

Per aggiungere un filtro, utilizza uno dei seguenti metodi:

  • Fai clic su Filtri , seleziona un'opzione dall'elenco e poi inserisci il valore.
  • Fai clic sul testo grigio Aggiungi filtro dati del profilo nella barra di filtro, quindi inserisci l'opzione e il valore del filtro.
  • Per le opzioni di filtro Metti a fuoco, Mostra dal frame e Mostra serie, puoi anche posizionare il cursore sul frame e selezionare l'opzione dalla relativa descrizione comando.

Per rimuovere un filtro, fai clic su Chiudi sul filtro.

Quando prepara i dati da visualizzare, Profiler cerca corrispondenze tra un frame e un filtro. Quando si verifica una corrispondenza, Profiler utilizza FILTER-OPTION per determinare quale azione eseguire. Un frame corrisponde al filtro quando il nome della funzione o il nome del file dell'origine della funzione contiene VALUE. Viene eseguito un confronto sensibile alle maiuscole. Ad esempio, se il filtro è Hide frames : oo, i frame con funzioni denominate foo, foo1 e busyloop vengono nascosti nel grafico a forma di fiamma.

Metrica

Per impostare la modalità di aggregazione del tipo di profilo, utilizza il filtro Metrica. Ad esempio, se selezioni un tipo di profilo Heap, hai la possibilità di visualizzare i dati in termini di byte e oggetti.

Le opzioni disponibili per il filtro Metrica dipendono dal linguaggio di programmazione e dal Tipo di profilo selezionato:

  • Per i profili Tempo CPU, l'unica scelta è Tempo CPU.
  • Per i profili Heap, le opzioni sono:

    • Byte
    • Oggetti
  • Per i profili Heap allocato, le opzioni sono:

    • Byte alloc totali
    • Total alloc objects
  • Per i profili Ora standard, le opzioni sono:

    • Conteggio
    • Tempo totale di esecuzione
  • Per i profili Thread, l'unica scelta è Goroutine.

  • Per i profili Concorrenza, le opzioni sono:

    • Ritardo
    • Controversie

Per ulteriori informazioni sui tipi di metriche di profilazione, consulta Concetti di profilazione.

Ad esempio, lo screenshot seguente mostra il consumo della CPU di un programma:

Grafico del profiler per l'utilizzo della CPU

Qui puoi vedere che la routine busyloop chiama foo1 e foo2, entrambe le quali chiamano varie altre routine. Puoi aggiungere filtri per limitare ulteriormente il grafico solo ai dati di tuo interesse.

Evidenzia

Quando utilizzi il filtro Messaggio in primo piano, selezioni una singola funzione e il grafico a forma di fiamma mostra i percorsi di codice che passano dentro e fuori da quella funzione specifica.

Per informazioni dettagliate su come mettere a fuoco il grafico e interpretare i risultati, consulta Usare il filtro Imposta stato attivo nel grafico a fiamme.

Mostra stack

Per visualizzare tutti gli stack di chiamate che contengono un frame corrispondente al valore del filtro e nascondere tutti gli altri stack di chiamate, utilizza il filtro Mostra stack. Il grafico mostra gli elementi chiamanti e chiamati della funzione, ovvero tutto ciò che chiama la funzione di corrispondenza e tutto ciò che chiama.

Questo filtro esegue un test di sottostringa sensibile alle maiuscole. Si verifica una corrispondenza se la funzione frame contiene il valore del filtro.

Per limitare il grafico dell'utilizzo della CPU dell'esempio precedente in modo che mostri solo le strutture di chiamate che coinvolgono la funzione foo1, imposta un filtro Mostra strutture di chiamate per foo1:

Grafico del profiler per l'utilizzo della CPU filtrato con la visualizzazione delle serie

Nascondi stack

Nasconde tutti gli stack di chiamate che contengono un frame corrispondente al valore del filtro. Questo filtro è spesso utile quando vuoi nascondere serie non interessanti. Ad esempio, con le applicazioni Java è comune aggiungere un filtro Hide stacks: unsafe.park.

Questo filtro esegue un test di sottostringa sensibile alle maiuscole. Si verifica una corrispondenza se la funzione frame contiene il valore del filtro.

Mostra da frame

Per visualizzare tutti gli stack di chiamate, a partire dal frame corrispondente al valore del filtro e per nascondere tutti gli altri stack di chiamate, utilizza il filtro Mostra dal frame. Il grafico risultante mostra gli stack di chiamate dalla funzione con nome in poi. Questo filtro è utile se la funzione viene chiamata da molti luoghi e vuoi visualizzare il consumo totale attribuibile.

Ad esempio, per visualizzare solo le chiamate provenienti dalla funzione baz, imposta un filtro Mostra da frame per baz:

Grafico del profiler per l'utilizzo della CPU filtrato con la visualizzazione dal frame

Questo filtro esegue un test di sottostringa sensibile alle maiuscole. Si verifica una corrispondenza se la funzione frame contiene il valore del filtro.

Nascondi frame

Per nascondere tutti i frame corrispondenti al valore del filtro, utilizza il filtro Nascondi frame. Il grafico mostra gli utenti che chiamano la funzione e gli eventuali utenti chiamati dalla funzione vengono raccolti insieme. Questo filtro è utile per rimuovere dal grafico i frame non pertinenti.

Ad esempio, per nascondere i frame sia per foo1 che per foo2, imposta un filtro Nascondi frame per foo. Poiché foo1 e foo2 corrispondono, entrambi vengono rimossi dal grafico. Poiché entrambe chiamano le routine bar e baz, i dati di ciascuna di queste funzioni vengono aggregati.

Grafico del profiler per l'utilizzo della CPU filtrato con i frame nascosti

Questo filtro esegue un test di sottostringa sensibile alle maiuscole. Si verifica una corrispondenza se la funzione frame contiene il valore del filtro.

Evidenzia

Per evidenziare tutti i frame i cui nomi funzione corrispondono al valore del filtro, utilizza il filtro Evidenziare. La funzione rimane in modalità di colore normale, ma le sequenze di chiamata sono colorate in tonalità più tenui.

Ad esempio, di seguito è riportato un grafico senza evidenziazioni:

Grafico di profilazione senza evidenziazione

Ecco lo stesso grafico con l'evidenziazione richiesta per la funzione baz:

Grafico del profilo con evidenziazione

Questo filtro esegue un test di sottostringa sensibile alle maiuscole. Si verifica una corrispondenza se la funzione frame contiene il valore del filtro.

Modalità colore

Per impostazione predefinita, il colore del riquadro corrisponde, se possibile, al pacchetto della funzione. Se le informazioni sul pacchetto non sono disponibili, come in Node.js, i nomi dei file di origine vengono utilizzati per colorare i blocchi di funzione. Con l'impostazione predefinita, una modifica del colore del frame della pila di chiamate indica una transizione da un pacchetto all'altro. L'opzione predefinita corrisponde al filtro Modalità a colori con un valore Nome.

Per colorare le frame nel grafico a forma di fiamma in base al consumo di una funzione e dei relativi elementi secondari, aggiungi un filtro Modalità di colore con il valore Totale. Se una funzione viene chiamata tramite più stack di chiamate, il colore viene determinato dal consumo della metrica per tutti gli stack di chiamate. Ad esempio, main e busyloop sono colorati in rosso. Questi due frame consumano la maggior parte del tempo della CPU. I frame etichettati foo2 e baz sono di colore arancione scuro, mentre il frame etichettato foo1 è di colore arancione più chiaro. I frame per bar e load sono i più leggeri. Questo grafico a forma di fiamma mostra che foo2 consuma più tempo della CPU rispetto a foo1, ma meno di busyloop:

Totale modalità colore

Per colorare i frame nel grafico a forma di fiamma in base al consumo metrico della funzione, ma escludere il consumo metrico dei relativi elementi secondari, aggiungete un filtro Modalità di colore con il valore Auto. Ad esempio, questo filtro mostra che la funzione baz consuma più tempo di CPU di qualsiasi altra funzione:

Modalità colore auto

Passaggi successivi