Cette page vous explique comment configurer et utiliser Cloud Profiler. Pour ce faire, vous devez 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.
Avant de commencer
- Connectez-vous à votre compte Google.
Si vous n'en possédez pas déjà un, vous devez en créer un.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
- Pour activer l'API Cloud Profiler pour votre projet, dans le volet de navigation de Google Cloud Console, cliquez sur Profiler ou sur le bouton suivant :
- 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, récupérez le package d'exemples Go :
go get -u github.com/GoogleCloudPlatform/golang-samples/profiler/...
La récupération du package prend quelques instants.
Profiler le code
Dans le package récupéré, accédez au répertoire des exemples de code pour Profiler :
cd ~/gopath/src/github.com/GoogleCloudPlatform/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. Lancez ce programme et laissez-le s'exécuter :
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.
Le message profiler has started
s'affiche quelques secondes après le démarrage du programme. 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 page Pourquoi une erreur d'autorisation refusée s'affiche-t-elle ? afin de connaître les causes possibles.
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 :
Sous les commandes de durée, vous trouverez des options permettant de sélectionner l'ensemble de données de profil à explorer. 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
Les piles d'appels du programme figurent dans un graphique de type "flamme" sous les commandes de sélection. 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 Utiliser l'interface de Profiler.
Étapes suivantes
Besoin d'informations plus générales ?
- Pour une présentation de Cloud Profiler, consultez la page À propos de Cloud Profiler.
- Pour en savoir plus sur le profilage, consultez la page Concepts du profilage.
- Pour en savoir plus sur les fonctionnalités de Profiler, consultez la page Utiliser l'interface de Cloud Profiler.
- Consultez nos ressources sur DevOps et découvrez notre programme de recherche.
- 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