Come visualizzare le prestazioni della tua applicazione con un grafico a fiamma SVG

Pubblicato: 2023-02-21

I grafici a fiamma SVG sono un ottimo modo per visualizzare le prestazioni della tua applicazione. Visualizzando il tempo trascorso in ciascuna funzione, puoi identificare rapidamente le aree del tuo codice che richiedono troppo tempo. Per visualizzare un grafico a fiamma SVG, dovrai utilizzare uno strumento in grado di generarne uno. Sono disponibili molti strumenti open source, come flamegraph.io. Dopo aver generato il grafico della fiamma, puoi incorporarlo nel tuo sito Web o blog utilizzando un tag. Puoi anche utilizzare uno strumento come Fogli Google per visualizzare il tuo grafico a fiamma. Basta creare un nuovo foglio di calcolo, selezionare "Inserisci > Immagine", quindi incollare l'URL del grafico a fiamma.

Come si esegue un grafico a fiamma?

Come si esegue un grafico a fiamma?
Immagine di: badawi.io

Per eseguire un grafico a fiamma, devi avere alcune cose installate sul tuo computer. La prima cosa di cui hai bisogno è il browser Google Chrome. Successivamente, è necessario installare l'estensione Flame Graph. Dopo aver installato entrambe queste cose, devi aprire il browser Google Chrome e andare alla pagina dell'estensione Flame Graph . Da lì, dovrai fare clic sul pulsante "Crea un nuovo grafico a fiamma". Verrà visualizzata una nuova scheda in cui dovrai inserire l'URL del sito Web per il quale desideri creare un grafico a fiamma. Dopo aver inserito l'URL, dovrai fare clic sul pulsante "Crea grafico a fiamma". Ci vorranno alcuni istanti per creare il grafico della fiamma. Una volta terminato, sarai in grado di vedere i risultati.

Il grafico a fiamma mostra una traccia di richiesta distribuita e un riepilogo di ogni chiamata di servizio che si è verificata durante l'esecuzione della richiesta. I grafici a fiamma delle tracce distribuite mostrano i dati di latenza e di errore per aiutare gli sviluppatori a identificare i colli di bottiglia nelle loro applicazioni. L'articolo fornisce una spiegazione su come interpretare un grafico a fiamma, nonché un esempio, nonché altri metodi per tracciare tracce distribuite. L'asse Y visualizza la profondità dello stack di chiamate (il numero di chiamate). Quando si fa clic su un intervallo in un grafico a fiamma, in genere viene visualizzato un riepilogo della durata e dell'errore associati alla chiamata. Puoi trovare metriche, registri, dati sulle prestazioni della rete, hotspot di codice e altre informazioni contestuali facendo clic sulle schede sotto il grafico a fiamma. Il diagramma a spirale è formato da un cerchio circondato da una serie di anelli. I grafici a fiamma possono essere utilizzati per visualizzare i metodi e i percorsi del codice utilizzati per soddisfare una richiesta da un code profiler. Gli strumenti Datadog Application Performance Monitoring e Distribution tracing consentono di tenere traccia del percorso di tutte le richieste in tutti i servizi.

I grafici a fiamma offrono agli sviluppatori un modo rapido e semplice per visualizzare i problemi di prestazioni

I grafici a fiamma possono essere utilizzati dagli sviluppatori per visualizzare le prestazioni delle applicazioni distribuite in pochi secondi. I grafici a fiamma possono aiutare gli sviluppatori a identificare e correggere i problemi di prestazioni fornendo una rappresentazione grafica della traccia della richiesta ed evidenziando dove l'applicazione ha avuto problemi.

Come si effettua la ricerca su Flamegraph?

Esistono diversi modi per cercare su flamegraph. Un modo è utilizzare la casella di ricerca che si trova nella parte in alto a destra dello schermo. Questa casella di ricerca consente di digitare parole chiave che verranno poi utilizzate per cercare il flamegraph. Un altro modo per cercare su flamegraph è utilizzare la funzione di navigazione. Questa funzione si trova sul lato sinistro dello schermo. Questa funzione consente di navigare tra le diverse categorie di flamegraph.

Con l'avvento dei grafici a fiamma, ora è più facile cercarli. C'è un percorso del codice di scrittura sotto il grande frame TCP_send() sulla destra. Se fai clic su uno dei frame evidenziati, puoi vedere perché ciò potrebbe accadere. Tcp_Send era presente nel 59,1% dei campioni testati. Altri termini interessanti da cercare includono re?cv, spin, copy e x.

Perché si chiama grafico a fiamma?

Durante la creazione di una visualizzazione, Neelakanth e Roch hanno utilizzato colori completamente casuali. La CPU era calda (occupata), il che spiega perché ho scelto prima solo i colori caldi. Poiché assomigliava alle fiamme, i grafici delle fiamme divennero rapidamente popolari.

I pericoli delle fiamme

L'evento infuocato è un modo divertente per scatenare la frustrazione e avviare una vivace discussione. Possono anche portare a una rottura nelle relazioni e far crollare le persone.
Il modo migliore per affrontare le fiamme è ignorarle. Qualcuno può affiggere una fiamma; dovresti essere tu a ignorarlo. Non c'è bisogno di rispondere. Non vale l'energia spesa.
La fiamma può essere un modo divertente per comunicare, ma in alcuni casi può anche essere dannosa se usata in modo errato. Non devi aver paura delle fiamme; invece, dovresti evitarli e mantenere la calma.

Chi ha inventato i flamegraph?

I grafici a fiamma sono diventati uno strumento importante per l'analisi delle prestazioni in molte lingue, così come in Netflix e in altri settori. Il loro autore, Brendan Gregg, ha creato il Flame Graph, che è stato pubblicato nel numero di giugno 2016 di Communications of the ACM.


Visualizzatore di grafici a fiamma

Un visualizzatore di grafici a fiamma è un tipo di software che consente agli utenti di visualizzare i dati sotto forma di un grafico. Questo software viene spesso utilizzato per risolvere problemi con computer o altri dispositivi.

Puoi utilizzare lo speedscope per esaminare i profili delle prestazioni di grandi dimensioni in modo basato sul Web. FlameGraphs di Brendan Gregg è stato ispirato dal pannello delle prestazioni degli strumenti per sviluppatori di Chrome. I dati dal sistema non vengono trasmessi a nessun server e vengono eseguiti completamente all'interno del browser. Chrome e Firefox dovrebbero funzionare con tutte le piattaforme (anche se ho testato solo Mac). Nella visualizzazione pesante a sinistra, le pile identiche vengono raggruppate indipendentemente dal fatto che siano state registrate in sequenza. La pila di ogni genitore è ordinata in modo che la sua pila più pesante si trovi a sinistra, da qui l'etichetta per mancini. Una visione dettagliata della situazione ti aiuterà a capire dove ti trovi in ​​termini di quante chiamate di funzione hai in una data situazione.

Rudro Samanta ha utilizzato lo speedscope per visualizzare i profili delle applicazioni iOS acquisiti utilizzando Xcode. Jest viene utilizzato per scrivere casi di test, Travis CI viene utilizzato per integrare continuamente il codice, Coveralls viene utilizzato per i rapporti sulla copertura dei test, Parcel viene utilizzato per trasformare il codice sorgente e Prettier viene utilizzato per la formattazione automatica del codice. Un modo per ottenere ciò è aumentare il numero di formati che lo speedscope può importare e un modo per rendere più strette le integrazioni. Lavoro allo speedscope ormai da nove mesi e mi sento come se me lo fossi lasciato scappare. In qualità di ingegnere, mi sforzerò di creare sistemi e set di strumenti manutenibili, comprensibili e utili per aiutare le persone a risolvere problemi complessi in tutto il mondo. Credo che quest'anno dedicherò più tempo a progetti creativi e collaborativi.

Grafico a fiamma online

Un grafico a fiamma è una rappresentazione grafica dei dati di profilazione, generalmente utilizzata per mostrare le caratteristiche delle prestazioni dei programmi software. L'altezza di ciascuna sezione rappresenta la quantità di tempo trascorso in quella particolare sezione di codice. Le sezioni sono ordinate da sinistra a destra in base a quando sono state chiamate.

A differenza degli alberi e dei grafici, i grafici a fiamma utilizzano efficacemente lo spazio dello schermo presentando una grande quantità di informazioni in un piccolo formato. Cliccando qui, imparerai come convertire un albero in un grafico a fiamma, nonché quali sono le caratteristiche principali di un grafico a fiamma. I grafici a fiamma vengono utilizzati in Google Cloud Profiler per visualizzare i dati di profilazione. Quando segui uno stack di chiamate, le larghezze dei frame diminuiscono perché il tempo totale della CPU di un chiamato non può essere superiore al tempo della CPU di un altro chiamato. La forma della fiamma è causata da questo comportamento. Il grafico a fiamma ora appare come segue dopo aver rimosso gli spazi bianchi in eccesso e aver colorato i frame utilizzando il tempo di CPU automatico. Anche se gli stack di chiamate per foo1 e foo2 sono stati mantenuti, lo stack che iniziava con foo2 e termina con foo1 si trova ora accanto al frame.

Come si fa un grafico a fiamma?

Per generare grafici a fiamma, devi prima campionare la traccia dello stack. È stato tradizionalmente suddiviso in due tipi: profili di sistema, come Linux perf, che mostrano i percorsi del codice di sistema (ad esempio, JVM GC, syscalls, TCP), ma non i profili Java. Sono disponibili profiler JVM, come hprof, lJP e profiler commerciali.

Grafico a fiamma vs grafico a fiamma

Ci sono alcune differenze chiave tra un grafico a fiamma e un grafico a fiamma. Un grafico a fiamma mostra in genere una sequenza temporale di eventi, mentre un grafico a fiamma mostra una traccia dello stack. I grafici a fiamma vengono spesso utilizzati per eseguire il debug dei problemi di prestazioni, mentre i grafici a fiamma sono più comunemente utilizzati per visualizzare i dati sulle prestazioni. I grafici a fiamma sono un ottimo modo per vedere come un programma sta trascorrendo il suo tempo. Possono mostrarti dove si trovano i colli di bottiglia e come il programma utilizza le risorse. I grafici a fiamma sono un ottimo modo per vedere come un programma utilizza le risorse.

Come tecnica grossolana ma utile per determinare quali percorsi di codice sono caldi (perché sono occupati sulla CPU), il profiling a una velocità fissa produce buoni risultati. I grafici a fiamma consentono di identificare rapidamente i percorsi del codice hot campionando le tracce dello stack. I miei esempi di Linux perf (perf_events) e DTrace sono entrambi esempi di software che è possibile installare. FlameGraph è uno strumento Perl che genera un SVG interattivo e ti consente di vedere i dettagli trascinando e rilasciando le immagini. La visualizzazione può sembrare simile ad altre dei profiler, ma differisce da loro in qualche modo. Poiché questo era inizialmente utilizzato per visualizzare ciò che è caldo sulla CPU, è stato definito grafico a fiamma. Dai un'occhiata alla sezione eBPF profile(8) per un metodo a basso sovraccarico per l'esecuzione nei kernel Linux più recenti (eBPF profile(8) non è consigliato).

Si prega di consultare la sezione Flame Graphs della mia pagina perf_events per ulteriori informazioni su perf. È possibile generare l'output ripiegato direttamente dal report perf di Linux 4.5 includendo una modalità ripiegata, accessibile solo tramite stackcollapse-perf.pl. In questo esempio viene fornito un filo di kernel (-a) e utente (-d) separati da stack utente e kernel (-f) a 99 Hertz (-F 99) e c'è un limite di tempo di 60 secondi per i campioni. I grafici a fiamma possono essere generati utilizzando SystemTap v1.7 in Fedora 16. Il timer può essere utilizzato anche per campionare le tracce dello stack. Questo probe del profilo viene eseguito alla frequenza di clock del sistema (CONFIG_HZ). SystemTap può utilizzare la sua funzione di aggregazione systemTap per aggregare all'interno del kernel e passare un rapporto (meno dettagliato) agli utenti.

I grafici sono stati generati utilizzando KVM (host Ubuntu) (32 bit) su un guest Fedora 16 (con una CPU virtuale). Su bare metal, alcuni percorsi di codice e rapporti di campionamento saranno molto diversi. È possibile fare clic sugli elementi nei dati di profilazione per vedere le percentuali (ma non fare clic per ingrandire, poiché si tratta di una nuova versione), ma non per ingrandire. Il grafico è uno strumento eccellente per saperne di più sugli interni di Linux. Su un host hypervisor del kernel illumos, in questo esempio è possibile vedere sia lo stack dell'utente che quello del kernel. Sono disponibili anche le versioni standalone SVG e PNG. Per osservare come il tempo del kernel viene assegnato alla creazione di processi di breve durata, ho eseguito un carico di lavoro di questo grafico a fiamma.

Un grafico a fiamma viene in genere utilizzato per identificare il carico di interrupt del kernel visualizzando i capelli. Il bilanciamento NUMA in Ubuntu versione 1716 consuma più della metà dei cicli della CPU per bilanciare la memoria tra i nodi, con conseguenti prestazioni lente. Una riscrittura del grafico a fiamma in D3 è essenziale per mantenere costanti gli ordini di unione senza dover rigenerare il grafico a fiamma. Nella mia presentazione JavaOne 2016 Java Performance Analysis on Linux with Flame Graphs, tratterò le tecniche più recenti per la produzione di grafici flame in modalità mista utilizzando Linux perf. JDK8u60 include una funzionalità chiamata /PreservePointerFrame che consente di generare grafici perf e flame. JDK-8068945 è stato aggiunto alla libreria JDK come hot patch per la profilazione dello stack (puntatore frame). Quando si utilizza il registro RBP come puntatore al frame nel codice compilato per x64, viene considerato il puntatore al frame appropriato.

Quando si esegue DTrace come metodo Jstack, può tenere traccia degli stack a livello utente, nonché dei metodi e delle classi Java. Per i programmi Java, Stackcollapse.pl e flamegraph.pl vengono utilizzati per generare grafici di fiamma della CPU . Alcune versioni di JVM non supportano ustack helper, che presenta una serie di problemi. Funziona con qualsiasi traccia dello stack più combinazione di valori, non solo tracce dello stack con conteggi della CPU. Il primo problema è che Jstack() potrebbe non essere in grado di eseguire correttamente gli stack a causa del bug JDK-6260864, ​​che è stato archiviato nel 2005 e non è ancora stato risolto nel 2014. Questo bug fa sì che la maggior parte degli stack di esempio nei miei carichi di lavoro di produzione rottura. È possibile ottenere informazioni dettagliate sull'allocazione della memoria del dispositivo, sull'IO del dispositivo, sui modelli di chiamata di sistema, sugli eventi off-CPU e sulle chiamate di funzioni specifiche. Se uno di questi viene utilizzato, è possibile ottenere un'analisi dello stack con il valore pertinente: conteggi, byte o latenza. I grafici a fiamma possono essere visualizzati anche nella pagina Grafici a fiamma.

Grafico a fiamma Java

Un grafico a fiamma è un tipo di visualizzazione dei dati che viene utilizzato per rappresentare le prestazioni di un programma software. È un grafico che mostra la quantità di tempo che un programma trascorre in ciascuna funzione. L'altezza delle barre rappresenta la quantità di tempo che il programma trascorre in quella funzione. La larghezza delle barre rappresenta la quantità di tempo che il programma trascorre in quella funzione rispetto alle altre funzioni.

I grafici a fiamma sono recentemente emersi come un nuovo modo popolare per visualizzare l'utilizzo della CPU in Java. Possono essere creati utilizzando il leggero profiler Java di Google (code.google.com) e il mio software grafico a fiamma (github). È una buona cosa che i grafici a fiamma non siano una caratteristica separata dai profiler Java in futuro. In questo post del blog, esamineremo un metodo basato su JVMTI solo Java che, sebbene funzioni, presenta alcune limitazioni. Jeremy Manson ha creato un profiler Java leggero che può essere utilizzato per campionare la CPU. Questo report di esempio viene generato all'avvio di java fino alla sua chiusura, con un file trace.txt aggiunto ad esso. Per eseguire il programma, ci sono alcuni costi.

Per il mio programma, è stato minore (un aumento di solo l'1% nel tasso di richiesta e un aumento del 7% nel consumo di CPU). Se la frequenza di campionamento deve essere ridotta, vedere le sezioni successive. L'output del programma flamegraph.pl può essere personalizzato con una varietà di opzioni (list -h), incluso il titolo. Anche l'onesto profiler di Richard Warburton, che si basa sulla stessa tecnica di profilazione, torna utile. È possibile che riduca la frequenza di campionamento da 100 hertz a 50 hertz o meno se intendo raccogliere grandi quantità di dati per un lungo periodo di tempo.