Misurare il rendimento delle app
Questo documento mostra come configurare e utilizzare Cloud Profiler. Utilizza Cloud Shell per scaricare un programma Go di esempio, eseguirlo con la profilazione attiva e poi utilizzare l'interfaccia Profiler per esplorare i dati acquisiti.
Se prevedi di eseguire il profiling di applicazioni in esecuzione al di fuori di Google Cloud, devi eseguire alcuni passaggi di configurazione non trattati in questo documento. Per informazioni su questi passaggi, vedi Eseguire il profiling delle applicazioni in esecuzione all'esterno di Google Cloud.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the required API.
- Per aprire Cloud Shell, nella barra degli strumenti della console Google Cloud, fai clic su
Attiva Cloud Shell:
Dopo qualche istante, si apre una sessione di Cloud Shell all'interno della console Google Cloud:
Ottenere un programma da profilare
Il programma di esempio main.go
si trova nel repository golang-samples
su GitHub. Per scaricarlo, in Cloud Shell esegui il seguente comando per recuperare il pacchetto di esempi Go:
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Il recupero del pacchetto richiede alcuni istanti.
Esegui il profiling del codice
In Cloud Shell, vai alla directory del codice campione per Profiler nel pacchetto recuperato:
cd golang-samples/profiler/profiler_quickstart
Il programma main.go
crea un carico di lavoro che richiede molta CPU per fornire dati al profiler. In Cloud Shell, esegui il seguente comando per avviare il programma e lasciarlo in esecuzione:
go run main.go
Questo programma è progettato per caricare la CPU durante l'esecuzione. È configurato per utilizzare Profiler, che raccoglie i dati di profilazione del programma durante l'esecuzione e li salva periodicamente.
Pochi secondi dopo aver avviato il programma, viene visualizzato il messaggioprofiler has started
. Dopo circa un minuto vengono visualizzati altri due messaggi:
successfully created profile CPU
start uploading profile
Questi messaggi indicano che è stato creato e caricato un profilo nel tuo progetto Cloud Storage. Il programma continua a emettere gli ultimi due messaggi, circa una volta al minuto, per tutta la durata dell'esecuzione.
Se dopo aver avviato il servizio ricevi un messaggio di errore di autorizzazione negata, consulta Errori nella configurazione del progetto Google Cloud.
Interfaccia di Profiler
Pochi istanti dopo l'avvio dell'applicazione, Profiler visualizza i dati iniziali del profilo. L'interfaccia offre una serie di controlli e un grafico a forma di fiamma per esplorare i dati di profilazione:
Oltre ai controlli relativi al tempo, sono disponibili opzioni che ti consentono di scegliere il set di dati del profilo da utilizzare. Quando esegui il profiling di più applicazioni, utilizza Servizio per selezionare l'origine dei dati sottoposti a profilazione. Tipo di profilo ti consente di scegliere il tipo di dati del profilo da visualizzare. Nome zona e Versione ti consentono di limitare la visualizzazione ai dati delle zone Compute Engine o delle versioni dell'applicazione. Importanza ti consente di selezionare i profili acquisiti durante i picchi di consumo delle risorse.
Per perfezionare il modo in cui il grafico a forma di fiamma mostra i profili selezionati per l'analisi,
aggiungi filtri. Nello screenshot precedente, la barra dei filtrifilter_list mostra un filtro. Questa opzione di filtro è Metric
e il valore del filtro è CPU time
.
Esplorazione dei dati
Il grafico a forma di fiamma mostra gli stack di chiamate del programma. Il grafico a fiamme rappresenta ogni funzione con un frame. La larghezza del frame rappresenta la proporzione del consumo di risorse da parte della funzione. Il frame superiore rappresenta l'intero programma. Questo frame mostra sempre il 100% del consumo di risorse. Questo riquadro elenca anche il numero di profili medi in questo grafico.
Il programma di esempio non ha un insieme complicato di stack di chiamate. Nello screenshot precedente sono visibili 5 frame:
- Il frame grigio rappresenta l'intero file eseguibile, che rappresenta il 100% delle risorse consumate.
- Il frame verde
main
è il pulsante Vairuntime.main
. - Il frame
main
arancione è la routinemain
del programma di esempio. - Il frame
busyloop
arancione è una routine chiamata dalmain
del Sample. - Il frame
main.load
arancione è una routine chiamata dalmain
del Sample.
Il selettore di filtro ti consente di filtrare le funzioni che corrispondono a un determinato nome. Ad esempio, se esiste una libreria standard di funzioni di utilità,
puoi rimuoverle dal grafico. Puoi anche rimuovere gli stack di chiamate
originati da un determinato metodo o semplificare il grafico in altri modi.
L'applicazione main.go
è semplice, quindi non c'è molto da eliminare.
Anche per un'applicazione semplice, i filtri ti consentono di nascondere i fotogrammi non interessanti in modo da visualizzare più chiaramente quelli interessanti. Ad esempio, nello screenshot del profiling per il codice campione, il frame grigio è leggermente più grande del primo frame main
sottostante. Perché? C'è qualcos'altro in corso che non è immediatamente evidente perché la pila di chiamate main
consuma una percentuale così elevata delle risorse?
Per visualizzare cosa succede al di fuori della routine main
dell'applicazione,
aggiungi un filtro che nasconda lo stack di chiamate della routine main
.
Solo lo 0,227% del consumo di risorse si verifica al di fuori di main
:
Per ulteriori informazioni sui filtri e su altri modi per esplorare i dati di profilazione, consulta Selezionare i profili da analizzare.
Passaggi successivi
Per informazioni generali sul profiling, consulta i seguenti documenti:
- Panoramica di Cloud Profiler
- Concetti di profilazione
- Leggi le nostre risorse su DevOps ed esplora il programma di ricerca di DORA.
- Profilazione delle applicazioni Go
- Profilazione delle applicazioni Java
- Profilazione delle applicazioni Node.js
- Profilazione delle applicazioni Python
- Profiling delle applicazioni in esecuzione al di fuori di Google Cloud