Filtrare il grafico a fiamme
Cloud Profiler consente di aggiungere filtri per controllare il modo in cui vengono visualizzate le informazioni nei profili selezionati. Ad esempio, puoi aggiungere un filtro per nascondere frame o stack di chiamate specifici. L'aggiunta e la rimozione di filtri non modifica l'insieme di profili selezionati.
Ogni filtro è specificato da un FILTER-OPTION
predefinito abbinato a 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
:
Profiler crea automaticamente un filtro con
FILTER-OPTION
pari a Metric
e 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 approcci:
- Fai clic su Filtri filter_list, seleziona un'opzione dall'elenco e inserisci il valore.
- Fai clic sul testo grigio Aggiungi filtro dati profilo nella barra dei filtri, quindi inserisci l'opzione e il valore del filtro.
- Per le opzioni di filtro Stato attivo, Mostra dal frame e Mostra stack, puoi anche posizionare il puntatore sul frame e poi selezionare l'opzione dalla descrizione comando del frame.
Per rimuovere un filtro, fai clic su Chiudi close nel filtro.
Durante la preparazione dei dati da visualizzare, Profiler cerca
le 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 del frame o il nome 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 dal grafico a fiamme.
Metrica
Per impostare la modalità di aggregazione del tipo di profilo, utilizza il filtro Metrica. Ad esempio, se selezioni un tipo di profilo heap, puoi scegliere se 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 di 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 totali allocati
- Totale oggetti allocati
Per i profili Tempo totale, le opzioni sono:
- Numero
- Tempo complessivo
Per i profili Thread, l'unica scelta è Goroutine.
Per i profili Contention, le opzioni sono:
- Ritardo
- Contese
Per ulteriori informazioni sui tipi di metriche di profilazione, consulta Concetti di profilazione.
Ad esempio, il seguente screenshot mostra il consumo di CPU da parte di un programma:
Qui puoi vedere che la routine busyloop
chiama foo1
e foo2
, che chiamano entrambe
altre routine diverse. Potete aggiungere filtri per limitare ulteriormente
il grafico ai soli dati di interesse.
Evidenzia
Quando utilizzi il filtro Stato attivo, selezioni una singola funzione e il grafico a fiamme mostra i percorsi di codice che confluiscono all'interno e all'esterno di quella funzione specifica.
Per informazioni dettagliate su come mettere a fuoco il grafico e interpretare i risultati, consulta la sezione Concentrazione del grafico a fiamme.
Mostra stack
Per visualizzare tutti gli stack di chiamate che contengono un frame che corrisponde al valore del filtro e nascondere tutti gli altri stack di chiamate, utilizza il filtro Mostra stack. Il grafico mostra i chiamanti e i chiamanti della funzione, ovvero tutto ciò che chiama la funzione corrispondente e tutto ciò che chiama.
Questo filtro esegue un test delle sottostringhe sensibile alle maiuscole. Si verifica una corrispondenza se la funzione frame contiene il valore del filtro.
Per limitare il grafico di utilizzo della CPU dell'esempio precedente in modo da mostrare solo gli stack di chiamate che interessano la funzione foo1
, imposta un filtro Mostra stack per foo1
:
Nascondi stack
Nascondi tutti gli stack di chiamate che contengono un frame che corrisponde al valore del filtro. Questo filtro è spesso utile quando vuoi nascondere stack non interessanti. Ad esempio, con le applicazioni Java, l'aggiunta di un filtro Hide stacks: unsafe.park
è una pratica comune.
Questo filtro esegue un test delle sottostringhe 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 che corrisponde 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 basso. Questo filtro è utile se la funzione viene richiamata da più luoghi e vuoi visualizzare il consumo totale attribuibile a questa funzione.
Ad esempio, per mostrare solo le chiamate provenienti dalla funzione baz
, imposta un filtro Mostra dal frame per baz
:
Questo filtro esegue un test delle sottostringhe sensibile alle maiuscole. Si verifica una corrispondenza se la funzione frame contiene il valore del filtro.
Nascondi frame
Per nascondere dalla visualizzazione tutti i frame che corrispondono al valore del filtro, utilizza il filtro Nascondi frame. Il grafico mostra i chiamanti della funzione e tutti i chiamanti della funzione vengono raccolti insieme. Questo filtro è utile per rimuovere dal grafico i frame non pertinenti.
Ad esempio, per nascondere i frame sia per foo1
sia per foo2
, imposta un filtro Nascondi frame per foo
. Sia foo1
che foo2
corrispondono, pertanto
vengono rimossi entrambi dal grafico. Poiché entrambe chiamano le routine bar
e baz
, i dati di ciascuna di queste funzioni vengono aggregati.
Questo filtro esegue un test delle sottostringhe 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 delle funzioni corrispondono al valore del filtro, utilizza il filtro Evidenzia. La funzione rimane in modalità colore normale, ma le sequenze di chiamata vengono colorate in toni più attenuati.
Ad esempio, di seguito è riportato un grafico senza evidenziazione:
Ecco lo stesso grafico con l'evidenziazione richiesta per la funzione baz
:
Questo filtro esegue un test delle sottostringhe sensibile alle maiuscole. Si verifica una corrispondenza se la funzione frame contiene il valore del filtro.
Modalità colore
Per impostazione predefinita, il colore del frame corrisponde, dove possibile, al pacchetto della funzione. Se le informazioni sui pacchetti non sono disponibili, come nel caso di Node.js, i nomi dei file di origine vengono utilizzati per colorare i blocchi funzione. Con l'impostazione predefinita, la modifica del colore del frame dello stack di chiamate indica una transizione da un pacchetto all'altro. L'opzione predefinita corrisponde al filtro Modalità colore con il valore Nome.
Per colorare i frame nel grafico a fiamme in base al consumo di una funzione e ai relativi elementi secondari, aggiungi un filtro Modalità colore con il valore Totale. Se una funzione viene richiamata tramite più stack di chiamate, il colore è determinato dal consumo delle metriche per tutti gli stack di chiamate.
Ad esempio, main
e busyloop
sono di colore rosso. Questi due frame consumano
la maggior parte del tempo di CPU. I frame etichettati foo2
e baz
sono di un arancione scuro,
mentre il frame etichettato foo1
è di un arancione più chiaro. I frame di bar
e load
sono i più leggeri. Questo grafico a fiamme mostra che foo2
consuma più
tempo CPU di foo1
, ma meno di busyloop
:
Per colorare i frame nel grafico a fiamme in base al consumo delle metriche della funzione, ma escludere il consumo delle metriche degli elementi secondari, aggiungi un filtro Modalità colore con il valore Self.
Ad esempio, questo filtro mostra che la funzione baz
consuma più tempo di CPU rispetto a qualsiasi altra funzione:
Passaggi successivi
- Inquadra il grafico a fiamme su una funzione.
- Visualizza le tendenze storiche.
- Confronta i profili.
- Scarica i dati del profilo.