Cómo medir el rendimiento de la app

En este documento, se muestra cómo configurar y usar Cloud Profiler. Debes descargar un programa de Go de muestra, ejecutarlo con la generación de perfiles habilitada y, luego, usar la interfaz de Profiler para explorar los datos capturados.

Antes de comenzar

  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. Para abrir Cloud Shell, en la barra de herramientas de la consola de Google Cloud, haz clic en Activar Cloud Shell:

    Activa Cloud Shell.

    Después de unos momentos, se abrirá una sesión de Cloud Shell en la consola de Google Cloud:

    Sesión de Cloud Shell

Obtén un programa para crear perfiles

El programa de muestra, main.go, se encuentra en el repositorio golang-samples en GitHub. Para obtenerlo, recupera el paquete de muestras de Go con el siguiente comando:

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

La recuperación del paquete tarda unos minutos en completarse.

Crea un perfil del código

Ve al directorio del código de muestra para Profiler en el paquete recuperado:

cd golang-samples/profiler/profiler_quickstart

El programa main.go crea una carga de trabajo de uso intensivo de CPU para proporcionar datos al generador de perfiles. Inicia 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 recopila datos de generación de perfiles del programa a medida que se ejecuta y los guarda periódicamente.

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

 successfully created profile CPU
 start uploading profile

Estos mensajes indican que se creó un perfil y se subió a tu proyecto de Cloud Storage. Mientras se ejecuta, el programa emite los últimos dos mensajes, aproximadamente una vez por minuto.

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

Interfaz de Profiler

Unos momentos después de iniciar la aplicación, Profiler muestra los datos del perfil inicial. La interfaz ofrece un arreglo de controles y un gráfico tipo llama para explorar los datos de generación de perfiles:

Interfaz de Profiler con el código de muestra.

Además de los controles de tiempo, hay opciones que te permiten elegir el conjunto de datos de perfil que deseas usar. Cuando generas perfiles de varias aplicaciones, usas Service (Servicio) para seleccionar el origen de los datos perfilados. Profile type (Tipo de perfil) te permite elegir el tipo de datos de perfil que se mostrará. El nombre de Zone (Zona) y Version (Versión) te permiten restringir la visualización a datos de zonas de Compute Engine o versiones de la aplicación. Weight (Peso) te permite seleccionar perfiles capturados durante el consumo máximo de recursos.

Para definir mejor la forma en que el gráfico de llama muestra los perfiles que seleccionaste para analizar, agrega 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.

Explora los datos

El gráfico tipo llama muestra las pilas de llamadas del programa. El gráfico tipo llama representa cada función con un marco. El ancho del marco representa la proporción de consumo de recursos por esa función. El marco superior representa el programa completo. Este marco siempre muestra el 100% del consumo de recursos y enumera cuántos perfiles se promedian en este gráfico.

El programa de muestra no tiene un conjunto complicado de pilas de llamadas. En la captura de pantalla anterior, verás 5 marcos:

  • El marco gris representa el ejecutable completo, que representa el 100% de los recursos consumidos.
  • El marco verde main es Go runtime.main.
  • El marco naranja main es la rutina main del programa de muestra.
  • El marco naranja busyloop es una rutina que se llama desde el main de la muestra.
  • El marco naranja main.load es una rutina que se llama desde el main de la muestra.

El selector de filtros te permite filtrar funciones que coinciden con algún nombre. Por ejemplo, si hay una biblioteca estándar de funciones de utilidad, puedes quitarla 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 maneras. La aplicación main.go es simple, por lo que no hay mucho que filtrar.

Incluso para una aplicación simple, los filtros te permiten ocultar marcos poco interesantes para que puedas ver con mayor claridad los marcos interesantes. Por ejemplo, en la captura de pantalla de generación de perfiles para el código de muestra, el marco gris es ligeramente más grande que el primer marco main debajo de él. ¿Por qué? ¿Hay algo más que no sea evidente de inmediato porque la pila de llamadas main consume un porcentaje tan alto de los recursos? Para ver lo que ocurre fuera de la rutina main de la aplicación, agrega un filtro que oculte la pila de llamadas de la rutina main. Solo el 0.227% del consumo de recursos ocurre fuera de main:

Oculta pilas en el programa de muestra.

Para obtener más información sobre el filtrado y otras formas de explorar los datos de generación de perfiles, consulta Selecciona los perfiles que se analizarán.

¿Qué sigue?

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

Para obtener información sobre cómo ejecutar el agente de Cloud Profiler, consulta: