Medir el rendimiento de las aplicaciones

En este documento se explica cómo configurar y usar Cloud Profiler. Utilizarás Cloud Shell para descargar un programa Go de ejemplo, ejecutarlo con la elaboración de perfiles habilitada y, a continuación, usar la interfaz de Profiler para consultar los datos recogidos.

Si tienes previsto crear perfiles de aplicaciones que se ejecuten fuera deGoogle Cloud, debes seguir algunos pasos de configuración que no se explican en este documento. Para obtener información sobre estos pasos, consulta Crear perfiles de aplicaciones que se ejecutan fuera Google Cloud.

Antes de empezar

  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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Enable the required API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. Para abrir Cloud Shell, en la barra de herramientas de la consola Google Cloud , haz clic en Activar Cloud Shell:

    Activa Cloud Shell.

    Al cabo de unos segundos, se abrirá una sesión de Cloud Shell en la consolaGoogle Cloud :

    Sesión de Cloud Shell.

  6. Obtener un programa para crear un perfil

    El programa de ejemplo, main.go, se encuentra en el repositorio golang-samples de GitHub. Para obtenerlo, ejecuta el siguiente comando en Cloud Shell para recuperar el paquete de ejemplos de Go:

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

    El proceso de recuperación del paquete tarda unos instantes en completarse.

    Perfil del código

    En Cloud Shell, ve al directorio del código de ejemplo de Profiler en el paquete recuperado:

    cd golang-samples/profiler/profiler_quickstart
    

    El programa main.go crea una carga de trabajo que requiere mucha CPU para proporcionar datos al generador de perfiles. En Cloud Shell, ejecuta el siguiente comando para iniciar el programa y déjalo en ejecución:

     go run main.go
    

    Este programa está diseñado para cargar la CPU mientras se ejecuta. Está configurado para usar Profiler, que recoge datos de creación de perfiles del programa mientras se ejecuta y los guarda periódicamente.

    Unos segundos después de iniciar el programa, aparece el mensaje profiler has started. Al cabo de un minuto, se muestran dos mensajes más:

     successfully created profile CPU
     start uploading profile
    

    Estos mensajes indican que se ha creado un perfil y se ha subido a tu proyecto de Cloud Storage. El programa sigue emitiendo los dos últimos mensajes, aproximadamente una vez por minuto, mientras se ejecuta.

    Si recibes un mensaje de error de permiso denegado después de iniciar el servicio, consulta la sección Errores con la configuración de tu proyecto Google Cloud .

    Interfaz de Profiler

    Unos instantes después de iniciar la aplicación, Profiler muestra los datos iniciales del perfil. La interfaz ofrece una serie de controles y un gráfico de llamas para explorar los datos de creación de perfiles:

    Interfaz de Profiler con el código de ejemplo.

    Además de los controles de tiempo, hay opciones que te permiten elegir el conjunto de datos de perfil que quieres usar. Cuando creas perfiles de varias aplicaciones, usas Servicio para seleccionar el origen de los datos del perfil. Tipo de perfil te permite elegir el tipo de datos de perfil que quieres mostrar. Los campos Nombre de zona y Versión te permiten restringir la visualización a los datos de las zonas de Compute Engine o de las versiones de la aplicación. Peso: te permite seleccionar los perfiles capturados durante los picos de consumo de recursos.

    Para acotar la forma en que el gráfico de llamas muestra los perfiles que has seleccionado para analizar, añade filtros. En la captura de pantalla anterior, la barra de filtros muestra un filtro. Esta opción de filtro es Metric y el valor de filtro es CPU time.

    Explorar los datos

    El gráfico de llamas muestra las pilas de llamadas del programa. El gráfico de llamas representa cada función con un marco. La anchura del marco representa la proporción del consumo de recursos de esa función. El marco superior representa todo el programa. Este marco siempre muestra el 100 % del consumo de recursos. En este marco también se indica cuántos perfiles se han promediado en este gráfico.

    El programa de ejemplo no tiene un conjunto complicado de pilas de llamadas. En la captura de pantalla anterior, se ven cinco marcos:

    • El marco gris representa todo el archivo ejecutable, que supone el 100% de los recursos consumidos.
    • El marco verde main es el runtime.main de Go.
    • El marco naranja main es la main rutina del programa de ejemplo.
    • El marco naranja busyloop es una rutina llamada desde el main de la muestra.
    • El marco naranja main.load es una rutina llamada desde el main de la muestra.

    El selector de filtros le permite, entre otras cosas, filtrar funciones que coincidan con un nombre. Por ejemplo, si hay una biblioteca estándar de funciones de utilidad, puedes quitarlas del gráfico. También puedes quitar las pilas de llamadas que se originan en un método determinado o simplificar el gráfico de otras formas. La aplicación main.go es sencilla, así que no hay mucho que filtrar.

    Incluso en una aplicación sencilla, los filtros te permiten ocultar los fotogramas que no te interesan para que puedas ver con más claridad los que sí. Por ejemplo, en la captura de pantalla de creación de perfiles del código de muestra, el marco gris es ligeramente más grande que el primer marco main que hay debajo. ¿Por qué? ¿Hay algo más que no se aprecia a primera vista porque la mainpila de llamadas consume un porcentaje tan abrumador de los recursos? Para ver lo que ocurre fuera de la rutina main de la aplicación, añade un filtro que oculte la pila de llamadas de la rutina main. Solo el 0,227% del consumo de recursos se produce fuera de main:

    Ocultar pilas en el programa de ejemplo.

    Para obtener más información sobre cómo filtrar y explorar los datos de creación de perfiles de otras formas, consulta Seleccionar los perfiles que se van a analizar.

    Siguientes pasos

    Para obtener información general sobre la creación de perfiles, consulta los siguientes documentos:

    Para obtener información sobre cómo ejecutar el agente de Cloud Profiler, consulta los siguientes artículos: