Misurare il rendimento dell'app

Questo documento mostra come configurare e utilizzare Cloud Profiler. Utilizzi 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 profilare applicazioni in esecuzione al di fuori di Google Cloud, devi eseguire alcuni passaggi di configurazione che non sono descritti in questo documento. Per informazioni su questi passaggi, vedi Profilazione delle applicazioni in esecuzione all'esterno Google Cloud.

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 consoleGoogle Cloud :

    Sessione di Cloud Shell.

  6. Ottenere un programma da profilare

    Il programma di esempio, main.go, si trova nel repository golang-samples su GitHub. Per ottenerlo, in Cloud Shell esegui questo comando per recuperare il pacchetto di esempi Go:

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

    Il recupero del pacchetto richiede alcuni istanti.

    Profilare il codice

    In Cloud Shell, vai alla directory delcodice campioneo per Profiler nel pacchetto recuperato:

    cd golang-samples/profiler/profiler_quickstart
    

    Il programma main.go crea un carico di lavoro che utilizza molta CPU per fornire dati al profiler. In Cloud Shell, esegui questo 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 dal programma durante l'esecuzione e li salva periodicamente.

    Pochi secondi 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 è 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 ricevi un messaggio di errore di autorizzazione negata dopo aver avviato il servizio, consulta Errori con la configurazione del progetto Google Cloud .

    Interfaccia di Profiler

    Pochi istanti dopo l'avvio dell'applicazione, Profiler mostra i dati iniziali del profilo. L'interfaccia offre una serie di controlli e un grafico a fiamma per esplorare i dati di profilazione:

    Interfaccia Profiler con il codice campione.

    Oltre ai controlli temporali, sono disponibili opzioni che ti consentono di scegliere il set di dati del profilo da utilizzare. Quando profili 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 di Compute Engine o alle versioni dell'applicazione. Peso ti consente di selezionare i profili acquisiti durante il picco di consumo delle risorse.

    Per perfezionare la visualizzazione del grafico a fiamma dei 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.

    Esplorare i dati

    Il grafico a 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 di quella 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 di cui è stata calcolata la media in questo grafico.

    Il programma di esempio non ha un insieme complicato di call stack; nello screenshot precedente, vedi 5 frame:

    • Il frame grigio rappresenta l'intero eseguibile, che rappresenta il 100% delle risorse utilizzate.
    • Il frame verde main è il Go runtime.main.
    • Il riquadro arancione main è la routine main del programma di esempio.
    • Il frame arancione busyloop è una routine chiamata da main del campione.
    • Il frame arancione main.load è una routine chiamata da main del campione.

    Il selettore di filtri 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 che hanno origine in 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 frame non interessanti in modo da visualizzare più chiaramente quelli interessanti. Ad esempio, nello screenshot del profilo per ilcodice campioneo, il frame grigio è leggermente più grande del primo frame main sottostante. Perché? Esiste qualcos'altro che non è immediatamente evidente perché lo mainstack di chiamate consuma una percentuale così elevata di risorse? Per visualizzare cosa succede al di fuori della routine main dell'applicazione, aggiungi un filtro che nasconde lo stack di chiamate della routine main. Solo lo 0,227% del consumo di risorse si verifica al di fuori di main:

    Nascondere gli stack nel programma di esempio.

    Per ulteriori informazioni sul filtraggio 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: