Mesurer les performances de votre application
Cette page vous explique comment configurer et utiliser Cloud Profiler. Vous utilisez Cloud Shell pour télécharger un exemple de programme Go, l'exécuter avec le profilage activé, puis analyser les données collectées à l'aide de l'interface Profiler.
Si vous prévoyez de profiler des applications exécutées en dehors de Google Cloud, vous devez effectuer certaines étapes de configuration qui ne sont pas abordées dans ce document. Pour en savoir plus sur cette procédure, consultez la page Profiler des applications s'exécutant en dehors de Google Cloud.
Avant de commencer
- 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.
-
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.
- Pour ouvrir Cloud Shell, cliquez sur Activer Cloud Shell dans la barre d'outils de Google Cloud Console :
Après quelques instants, une session Cloud Shell s'ouvre dans Google Cloud Console :
Obtenir un programme à profiler
L'exemple de programme main.go
se trouve dans le dépôt golang-samples
sur GitHub. Pour l'obtenir, exécutez la commande suivante dans Cloud Shell pour récupérer le package d'exemples Go:
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
La récupération du package prend quelques instants.
Profiler le code
Dans Cloud Shell, accédez au répertoire des exemples de code pour Profiler dans le package récupéré:
cd golang-samples/profiler/profiler_quickstart
Lorsque le programme main.go
fournit des données au profileur, il crée une charge de travail intensive pour le processeur. Dans Cloud Shell, exécutez la commande suivante pour démarrer le programme et le laisser en cours d'exécution:
go run main.go
Ce programme est conçu pour charger le processeur lors de son exécution. Il est configuré pour utiliser Profiler, qui collecte les données de profilage du programme en cours d'exécution et les enregistre périodiquement.
Quelques secondes après le démarrage du programme, le message profiler has started
s'affiche. Au bout d'une minute environ, les deux autres messages suivants s'affichent :
successfully created profile CPU
start uploading profile
Ces messages vous informent qu'un profil a été créé et importé dans votre projet Cloud Storage. Le programme continue d'émettre les deux derniers messages, à environ une minute d'intervalle, et ce, pendant toute sa durée d'exécution.
Si vous recevez un message d'erreur d'autorisation refusée après le démarrage du service, consultez la section Erreurs avec la configuration de votre projet Google Cloud.
Interface de Profiler
Quelques instants après le démarrage de l'application, Profiler affiche les données de profil initiales. L'interface offre un ensemble de commandes et un graphique de type "flamme" permettant d'explorer les données de profilage :
Outre les commandes de temps, il existe des options qui vous permettent de choisir l'ensemble de données de profil à utiliser. Lorsque vous profilez plusieurs applications, l'option Service vous permet de sélectionner l'origine des données profilées. L'option Profile Type (Type de profil) vous permet de sélectionner le type de données de profil à afficher. Les options Zone et Version sont destinées à limiter l'affichage aux données des zones Compute Engine ou des versions de l'application. L'option Weight (Pondération) vous permet de sélectionner les profils recueillis au cours des pics de consommation des ressources.
Les filtres vous aident à affiner l'affichage des profils que vous avez sélectionnés pour l'analyse dans le graphique de type "flamme". Dans la capture d'écran précédente, la barre de filtre filter_list affiche un filtre. Cette option de filtre est Metric
et la valeur du filtre est CPU time
.
Explorer les données
Le graphique de type "flamme" affiche les piles d'appels du programme. Le graphique de type "flamme" représente chaque fonction avec un cadre. La largeur du cadre correspond à la proportion des ressources consommées par cette fonction. Le cadre du haut représente l'ensemble du programme. Il indique toujours 100 % de la consommation de ressources, ainsi que le nombre de profils utilisés pour calculer la consommation moyenne dans ce graphique.
L'exemple de programme ne présente pas un ensemble complexe de piles d'appels. Dans la capture d'écran précédente, vous pouvez voir cinq cadres :
- Le cadre gris représente l'intégralité de l'exécutable, soit 100 % des ressources consommées.
- Le cadre
main
vert correspond à la routine Goruntime.main
. - Le cadre
main
orange correspond à la routinemain
de l'exemple de programme. - Le cadre
busyloop
orange correspond à une routine appelée à partir de la fonctionmain
de l'exemple. - Le cadre
main.load
orange correspond à une routine appelée à partir de la fonctionmain
de l'exemple.
Le sélecteur de filtre vous permet entre autres de filtrer les fonctions correspondant à un nom. Par exemple, s'il existe une bibliothèque standard de fonctions utilitaires, vous pouvez les supprimer du graphique. Vous pouvez également supprimer les piles d'appels provenant d'une certaine méthode ou simplifier le graphique de différentes manières.
Comme l'application main.go
est simple, il n'y a pas grand-chose à filtrer.
Même pour une application simple, les filtres vous permettent de masquer les cadres qui ne vous intéressent pas afin de n'afficher que ceux qui peuvent vous être utiles. Par exemple, dans la capture d'écran du profilage de l'exemple de code, le cadre gris est légèrement plus grand que le premier cadre main
situé en dessous. Pourquoi ? Se produit-il autre chose que l'on ne parvient pas à voir immédiatement parce que la pile d'appel de main
consomme un pourcentage élevé de ressources ?
Pour afficher ce qui se passe en dehors de la routine main
de l'application, ajoutez un filtre masquant la pile d'appels de la routine main
.
Seulement 0,227 % des ressources sont consommées en dehors de main
:
Pour en savoir plus sur le filtrage et les autres moyens d'explorer les données de profilage, consultez la page Sélectionner les profils à analyser.
Étape suivante
Pour obtenir des informations générales sur le profilage, consultez les documents suivants:
- Présentation de Cloud Profiler
- Concepts du profilage
- Consultez nos ressources sur DevOps et découvrez le programme de recherche de DORA.
- Profiler des applications Go
- Profiler des applications Java
- Profiler des applications Node.js
- Profiler des applications Python
- Profiler des applications s'exécutant en dehors de Google Cloud