Graphiques de type "flamme"

Cloud Profiler affiche les données de profilage à l'aide de graphiques de type "flamme". Contrairement aux arborescences et aux graphiques, les graphiques de type "flamme" utilisent efficacement l'espace d'affichage en représentant de grands volumes d'informations sous un format compact et lisible.

En guise de présentation, cette page explique comment convertir une arborescence en graphique de type "flamme" et récapitule ses caractéristiques principales.

Créer un graphique de type "flamme".

Pour créer un graphique de type "flamme" à partir d'une arborescence, suivez les étapes illustrées dans le diagramme suivant :

Créer un graphique de type "flamme"

  1. Retirez de l'arborescence les flèches indiquant les appels de fonction.

  2. Remplacez chaque nœud par un cadre.

    Les cadres sont de forme rectangulaire et sont tous de la même hauteur. Pour l'exemple de cette page, le temps CPU total utilisé par la fonction nommée dans le cadre détermine la largeur de celui-ci.

    Le pseudo-code pour chacune des fonctions est décrit dans le tableau suivant. Le temps CPU perso est défini par les tâches nécessitant une utilisation intensive des processeurs qui sont effectuées lors de l'exécution d'une fonction :

    Pseudo-code de la fonction Temps CPU perso
    (secondes)
    Temps CPU total
    (secondes)
    
    func main():
         foo1()
         foo2()
         // CPU intensive work
         // for 2 seconds 
    2 4 + 3 + 2 = 9
    
    func foo1():
         bar()
         // CPU intensive work
         // for 1.5 seconds 
    1,5 2,5 + 1,5 = 4
    
    func foo2():
         bar()
         // CPU intensive work
         // for 0.5 seconds 
    0.5 2,5 + 0,5 = 3
    
    func bar():
         // CPU intensive work
         // for 2.5 seconds
    2.5 2.5

  3. L'étape suivante consiste à supprimer l'espace vertical entre les cadres et à aligner les cadres sur la gauche tout en préservant les séquences d'appels. Si vous le souhaitez, vous pouvez définir un jeu de couleurs et colorer les cadres suivant la définition. Par exemple, vous pouvez colorer les cadres en fonction de leur package, du temps CPU total, du temps CPU perso ou selon une mesure différente.

    Après avoir supprimé l'espace blanc et coloré les cadres en fonction du temps CPU perso, le graphique de type "flamme" s'affiche désormais comme suit :

    Image détaillée du graphique de type "flamme"

    Notez que les piles d'appels pour foo1 et foo2 ont été préservées, même si la pile d'appels commençant par foo2 se trouve désormais à côté du cadre de foo1.

Résumé

Cet exemple simple illustre les éléments suivants :

  • Les graphiques de type "flamme" sont la représentation compacte d'une arborescence. Ils vous permettent de recréer une pile d'appels en traçant les cadres du haut vers le bas.
  • Les cadres nomment une fonction. La largeur du cadre correspond à la mesure relative du temps CPU total de cette fonction. Dans cet exemple, étant donné que le temps CPU total de la fonction foo2 est égal à un tiers du temps CPU total de la fonction main, le cadre de foo2 correspond au tiers de la largeur du cadre de main.
  • La largeur de l'espace vide sous un cadre indique la mesure relative du temps CPU perso pour la fonction nommée dans ce cadre. Par exemple, sous le cadre foo1, 1,5 unité est vide et 2,5 unités sont occupées par bar. Par conséquent, le temps CPU perso de foo1 équivaut à 37,5 % du temps CPU total, soit 1,5 secondes.
  • Lorsque vous suivez une pile d'appels, la largeur des cadres diminue, car le temps CPU total de l'appelé ne peut jamais excéder le temps CPU total de l'appelant. Ce comportement va déterminer la forme du graphique de type "flamme".

    Dans l'exemple, foo1 appelle bar, et le temps CPU total de foo1 est défini comme étant le temps CPU total de bar, plus le temps CPU perso de foo1. Par conséquent, le temps CPU total de bar ne peut pas excéder le temps CPU total de foo1.

Étapes suivantes