Mesurer les performances de l'application

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

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  4. Dans le panneau de navigation de la console Google Cloud, sélectionnez API et services, cliquez sur Activer les API et les services, puis activez l'API Cloud Profiler:

    Accéder aux paramètres de l'API Profiler

  5. Si API activée s'affiche, cela signifie que l'API est déjà activée. Sinon, cliquez sur le bouton Activer.

  6. Pour ouvrir Cloud Shell, cliquez sur Activer Cloud Shell dans la barre d'outils de Google Cloud Console :

    Activez Cloud Shell.

    Après quelques instants, une session Cloud Shell s'ouvre dans Google Cloud Console :

    Session Cloud Shell

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 :

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

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 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.

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 :

Interface de Profiler avec l'exemple de code

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 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 Go runtime.main.
  • Le cadre main orange correspond à la routine main de l'exemple de programme.
  • Le cadre busyloop orange correspond à une routine appelée à partir de la fonction main de l'exemple.
  • Le cadre main.load orange correspond à une routine appelée à partir de la fonction main 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 :

Masquer les piles dans l'exemple de programme

Pour en savoir plus sur le filtrage et d'autres façons d'explorer les données de profilage, consultez la section Sélectionner les profils à analyser.

Étapes suivantes

Pour obtenir des informations générales sur le profilage, consultez les documents suivants:

Pour en savoir plus sur l'exécution de l'agent Cloud Profiler, consultez les pages suivantes :