Misurare il rendimento delle app

Questo documento mostra come configurare e utilizzare Cloud Profiler. Scarica un programma Go di esempio, eseguilo con la profilazione attiva e utilizza l'interfaccia Profiler per sfogliare i dati acquisiti.

Prima di iniziare

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Enable the required API.

    Enable the API

  5. Per aprire Cloud Shell, nella barra degli strumenti della console Google Cloud, fai clic su Attiva Cloud Shell:

    Attiva Cloud Shell.

    Dopo qualche istante, si apre una sessione di Cloud Shell all'interno della console Google Cloud:

    Sessione Cloud Shell.

Ottenere un programma da profilare

Il programma di esempio, main.go, è nel repository golang-samples il giorno GitHub. Per scaricarlo, recupera il pacchetto di esempi Go:

git clone https://github.com/GoogleCloudPlatform/golang-samples.git

Il recupero del pacco richiede alcuni istanti.

Esegui il profiling del codice

Vai alla directory del codice campione per Profiler nel recupero pacchetto:

cd golang-samples/profiler/profiler_quickstart

Il programma main.go crea un carico di lavoro che richiede molta CPU per fornire dati al profiler. Avvia il programma e lascialo in esecuzione:

 go run main.go

Questo programma è progettato per caricare la CPU durante l'esecuzione. È configurato per utilizzare Profiler, che raccoglie dati di profilazione dal programma mentre viene eseguita e la salva periodicamente.

Qualche secondo dopo l'avvio del programma, viene visualizzato il messaggio profiler has started. Dopo circa un minuto vengono visualizzati altri due messaggi:

 successfully created profile CPU
 start uploading profile

Questi messaggi indicano che un profilo è stato creato e caricato sul tuo progetto Cloud Storage. Il programma continua a emettere gli ultimi due messaggi, circa una volta al minuto, per tutto il tempo di esecuzione.

Se dopo aver avviato il servizio ricevi un messaggio di errore di autorizzazione negata, consulta Errori nella configurazione del progetto Google Cloud.

Interfaccia Profiler

Qualche momento dopo l'avvio dell'applicazione, Profiler visualizza i dati iniziali del profilo. L'interfaccia offre una serie di controlli e un grafico a fiamme per l'esplorazione dei dati di profilazione:

Interfaccia del profiler con il codice di esempio.

Oltre ai controlli dell'orario, ci sono opzioni che ti consentono di scegliere di dati del profilo da utilizzare. Quando profila più applicazioni, utilizzi Servizio per selezionare l'origine dei dati profilati. 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. Peso ti consente di selezionare i profili acquisiti durante la stagione di picco. e il consumo di 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 filtri 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 questa 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:

  • La cornice grigia rappresenta l'intero eseguibile, che rappresenta il 100% del le risorse utilizzate.
  • Il frame main verde è il pulsante Vai runtime.main.
  • Il frame main arancione è la routine main del programma di esempio.
  • Il frame busyloop arancione è una routine chiamata dal main del Sample.
  • Il frame main.load arancione è una routine chiamata dal main del Sample.

Il selettore di filtri ti consente, ad esempio, di filtrare le funzioni che corrispondono un 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 filtrare.

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 di esempio, 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:

Nascondimento delle serie nel programma di esempio.

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 sulla profilazione, consulta i seguenti documenti:

Per informazioni sull'esecuzione dell'agente Cloud Profiler, consulta: