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
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
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.
- Para abrir Cloud Shell, en la barra de herramientas de la consola de Google Cloud, haz clic en Activar Cloud Shell:
Después de unos momentos, se abrirá una sesión de Cloud Shell en la consola de Google Cloud:
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:
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 filter_list 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 Goruntime.main
. - El marco naranja
main
es la rutinamain
del programa de muestra. - El marco naranja
busyloop
es una rutina que se llama desde elmain
de la muestra. - El marco naranja
main.load
es una rutina que se llama desde elmain
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
:
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:
- Descripción general de Cloud Profiler
- Conceptos de generación de perfiles
- Lee nuestros recursos sobre DevOps y explora el programa de investigación de DORA.
- Crea perfiles de aplicaciones Go
- Crea perfiles de aplicaciones Java
- Crea perfiles de aplicaciones Node.js
- Crea perfiles de aplicaciones Python
- Crea perfiles de aplicaciones que se ejecutan fuera de Google Cloud