Filtrer le graphique de type "flamme"

Cloud Profiler vous permet de contrôler l'affichage des informations contenues dans les profils sélectionnés grâce à l'ajout de filtres. Par exemple, vous pouvez ajouter un filtre pour masquer certains cadres ou piles d'appels. L'ajout et la suppression de filtres ne modifient pas votre ensemble de profils sélectionnés.

Chaque filtre est spécifié par une option FILTER-OPTION prédéfinie associée à une valeur, VALUE, définie par l'utilisateur :

[FILTER-OPTION] : [VALUE]

Chaque filtre que vous ajoutez s'affiche dans la barre de filtre. Cet exemple contient un filtre Metric : Bytes :

Affichage d'un filtre avec l'option de métrique et de valeur d'octets.

Profiler crée automatiquement un filtre en définissant une option de filtre (FILTER-OPTION) sur Metric et une valeur (VALUE) basée sur le type de profil sélectionné. Pour certains types de profils, vous pouvez modifier VALUE. En revanche, vous ne pouvez pas supprimer ce filtre.

Pour ajouter un filtre, choisissez l'une des méthodes suivantes :

  • Cliquez sur Filtres , sélectionnez une option dans la liste, puis saisissez la valeur.
  • Cliquez sur le texte gris Filtrer les données de profil dans la barre de filtre, puis saisissez l'option de filtre et la valeur.
  • Pour les options de filtres Cibler, Afficher depuis le cadre et Afficher les piles, vous pouvez également placer votre pointeur sur le cadre, puis sélectionner l'option dans l'info-bulle.

Pour supprimer un filtre, cliquez sur Fermer .

Lors de la préparation des données à afficher, Profiler recherche les correspondances entre un cadre et un filtre. Lorsqu'une correspondance est établie, Profiler utilise FILTER-OPTION pour déterminer l'action à exécuter. Un cadre correspond au filtre lorsque le nom de la fonction du cadre ou le nom du fichier source de la fonction contient VALUE. Une comparaison sensible à la casse est effectuée. Par exemple, si le filtre est Hide frames : oo, les cadres des fonctions nommées foo, foo1 et busyloop sont masqués dans le graphique de type "flamme".

Métrique

Pour définir le mode d'agrégation du type de profil, utilisez le filtre Métrique. Par exemple, si vous sélectionnez un type de profil tel que Segment de mémoire, vous avez le choix entre visualiser les données en termes d'octets ou d'objets.

Les options disponibles pour le filtre Métrique dépendent du langage de programmation et du type de profil sélectionné :

  • Pour les profils Temps CPU, la seule option disponible est Temps CPU.
  • Pour les profils Segment de mémoire, les options sont les suivantes :

    • Octets
    • Objets
  • Pour les profils Segment de mémoire alloué, les options sont les suivantes :

    • Nombre total d'octets alloués
    • Nombre total d'objets alloués
  • Pour les profils Durée d'exécution, les options sont les suivantes :

    • Nombre
    • Durée d'exécution
  • Pour les profils Threads, la seule option est Goroutine.

  • Pour les profils Contention, les options sont les suivantes :

    • Délai
    • Contentions

Pour en savoir plus sur les types de métriques de profilage, consultez la page Concepts du profilage.

Par exemple, la capture d'écran suivante montre la consommation de ressources processeur d'un programme :

Graphique du profileur pour l'utilisation du processeur

Ici, vous pouvez constater que la routine busyloop appelle foo1 et foo2, qui appellent toutes deux plusieurs autres routines. Vous pouvez appliquer des filtres pour restreindre davantage le graphique aux données qui vous intéressent.

Cibler

Lorsque vous utilisez le filtre Cibler, vous sélectionnez une seule fonction, et le graphique de type "flamme" affiche les chemins de code entrant et sortant de cette fonction spécifique.

Pour savoir comment cibler le graphique et interpréter les résultats, consultez la page Effectuer un focus à partir d'un graphique de type "flamme".

Afficher les piles

Pour afficher toutes les piles d'appels contenant un cadre qui correspond à la valeur du filtre, et pour masquer toutes les autres piles d'appels, utilisez le filtre Show stacks (Afficher les piles). Le graphique représente les appelants et les appelés de la fonction, c'est-à-dire tout ce qui appelle la fonction correspondante et tout ce que cette fonction appelle.

Ce filtre effectue un test de sous-chaîne sensible à la casse. Une correspondance s'établit si la fonction de cadre contient la valeur du filtre.

Pour restreindre le graphique d'utilisation du processeur de l'exemple précédent afin de n'afficher que les piles d'appels impliquant la fonction foo1, définissez un filtre Show stacks (Afficher les piles) pour foo1 :

Graphique de Profiler pour l'utilisation du processeur généré avec le filtre "Afficher les piles"

Masquer les piles

Vous pouvez masquer toutes les piles d'appels contenant un cadre qui correspond à la valeur du filtre. Ce filtre est souvent utile lorsque vous souhaitez masquer des piles qui ne vous intéressent pas. Par exemple, avec les applications Java, l'ajout d'un filtre Hide stacks: unsafe.park est une pratique courante.

Ce filtre effectue un test de sous-chaîne sensible à la casse. Une correspondance s'établit si la fonction de cadre contient la valeur du filtre.

Afficher depuis le cadre

Pour afficher toutes les piles d'appels depuis le cadre qui correspond à la valeur du filtre, et pour masquer toutes les autres piles d'appels, utilisez le filtre Show from frame (Afficher depuis le cadre). Le graphique obtenu représente les piles d'appels de manière descendante à partir de la fonction nommée. Ce filtre est utile si votre fonction est appelée depuis plusieurs endroits et que vous souhaitez connaître la consommation totale qui lui est attribuable.

Par exemple, pour n'afficher que les appels provenant de la fonction baz, définissez un filtre Show from frame (Afficher depuis le cadre) pour baz :

Graphique de Profiler pour l'utilisation du processeur généré avec le filtre "Afficher depuis le cadre"

Ce filtre effectue un test de sous-chaîne sensible à la casse. Une correspondance s'établit si la fonction de cadre contient la valeur du filtre.

Masquer les cadres

Pour masquer tous les cadres qui correspondent à la valeur du filtre, utilisez le filtre Hide frames (Masquer les cadres). Le graphique représente les appelants de la fonction et regroupe tous les appelés de cette dernière. Ce filtre est utile pour supprimer des cadres non pertinents du graphique.

Par exemple, pour masquer les cadres des fonctions foo1 et foo2, définissez un filtre Hide frames (Masquer les cadres) pour foo. Comme une correspondance s'établit entre les deux fonctions foo1 et foo2, elles sont toutes les deux supprimées du graphique. Étant donné que ces deux fonctions appellent les routines bar et baz, les données de chacune d'elles sont agrégées.

Graphique de Profiler pour l'utilisation du processeur généré avec le filtre "Masquer les cadres"

Ce filtre effectue un test de sous-chaîne sensible à la casse. Une correspondance s'établit si la fonction de cadre contient la valeur du filtre.

Mettre en surbrillance

Pour mettre en surbrillance tous les cadres dont le nom de fonction correspond à la valeur du filtre, utilisez le filtre Mettre en surbrillance. La fonction demeure dans un mode de couleur normal, mais les séquences d'appel sont colorées dans des tons plus atténués.

Par exemple, voici un graphique généré sans surbrillance :

Graphique de profilage généré sans filtre de surbrillance

Voici le même graphique généré en activant la mise en surbrillance pour la fonction baz :

Graphique de profilage généré avec le filtre de surbrillance

Ce filtre effectue un test de sous-chaîne sensible à la casse. Une correspondance s'établit si la fonction de cadre contient la valeur du filtre.

Mode couleur

Par défaut, la couleur du cadre correspond, si possible, au package de la fonction. Si les informations concernant le package ne sont pas disponibles, comme dans Node.js, les noms des fichiers sources sont utilisés pour colorer les blocs de fonction. Avec le paramètre par défaut, un changement de couleur du cadre de la pile d'appels indique une transition d'un package à un autre. L'option par défaut correspond au filtre Color mode (Mode couleur) dont la valeur est Nom.

Pour colorer les cadres d'un graphique de type "flamme" selon la consommation d'une fonction et de ses enfants, ajoutez un filtre Color mode (Mode couleur) avec la valeur Total. Si une fonction est appelée via plusieurs piles d'appels, la couleur dépend de la consommation de métrique de toutes les piles d'appels. Par exemple, les cadres main et busyloop sont de couleur rouge. Ils consomment le plus de temps CPU. Les cadres libellés foo2 et baz sont affichés en orange foncé, tandis que le cadre foo1 est en orange clair. Les cadres bar et load sont les plus clairs. Ce graphique de type "flamme" montre que la fonction foo2 consomme plus de temps CPU que la fonction foo1, mais moins que busyloop :

Mode couleur avec la valeur "Total"

Pour colorer les cadres d'un graphique de type "flamme" selon la consommation de métrique d'une fonction et exclure la consommation de métrique de ses enfants, ajoutez un filtre Color mode (Mode couleur) avec la valeur Self (Perso). Par exemple, ce filtre indique que la fonction baz consomme plus de temps CPU que toute autre fonction :

Mode couleur avec la valeur "Perso"

Étape suivante