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
:
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 filter_list, 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 close.
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 :
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
:
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
:
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.
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 :
Voici le même graphique généré en activant la mise en surbrillance pour la fonction baz
:
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
:
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 :
Étape suivante
- Effectuez un focus sur une fonction dans le graphique de type "flamme".
- Afficher les tendances historiques
- Comparez les profils.
- Téléchargez les données de profil.