Gráficos tipo llamas

Cloud Profiler muestra los datos de creación de perfiles mediante gráficos de llamas. A diferencia de los árboles y los gráficos, los gráficos de llamas aprovechan el espacio de la pantalla de forma eficiente, ya que representan una gran cantidad de información en un formato compacto y legible.

Para presentar los gráficos tipo llamas, en esta página se muestra cómo convertir un árbol en un gráfico de este tipo y se resumen las características principales de estos gráficos.

Crear un gráfico tipo llamas

Para crear un gráfico de llamas a partir de un árbol, sigue los pasos que se ilustran en el siguiente diagrama:

Crear un gráfico de llamas.

  1. Quita del árbol las flechas que indican llamadas a funciones.

  2. Sustituye cada nodo del árbol por un marco.

    Los marcos tienen forma rectangular y todos tienen la misma altura. En el ejemplo de esta página, el tiempo total de CPU usado por la función denominada en el marco determina la anchura del marco.

    En la siguiente tabla se describe el pseudocódigo de cada una de las funciones. El trabajo intensivo de la CPU que se realiza durante la ejecución de una función define el tiempo de CPU propio:

    Seudocódigo de la función Tiempo de CPU propio
    (segundos)
    Tiempo de CPU total
    (segundos)
    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. El siguiente paso es eliminar el espacio vertical entre los fotogramas y alinear los fotogramas a la izquierda, conservando las secuencias de llamadas. También puedes definir un esquema de colores y colorear los marcos según la definición. Por ejemplo, puedes colorear los marcos por paquete, por tiempo total de CPU, por tiempo de CPU propio o por otra medida.

    Después de eliminar los espacios en blanco excesivos y colorear los marcos por el tiempo de CPU propio, el gráfico de llamas ahora tiene el siguiente aspecto:

    Imagen detallada del gráfico de llamas.

    Observa que las pilas de llamadas de foo1 y foo2 se han conservado, aunque la pila de llamadas que empieza por foo2 ahora está junto al marco de foo1.

Resumen

En este ejemplo sencillo se muestra lo siguiente:

  • Los gráficos de llamas son una representación compacta de un árbol y puedes recrear una pila de llamadas trazando los marcos de arriba abajo.
  • Los marcos nombran una función y su anchura es la medida relativa del tiempo total de CPU de esa función. En este ejemplo, como el tiempo total de CPU de foo2 es un tercio del tiempo total de CPU de main, el fotograma de foo2 tiene un tercio de la anchura del fotograma de main.
  • La anchura del espacio vacío situado debajo de un marco es la medida relativa del tiempo de CPU propio de la función cuyo nombre se indica en el marco. Por ejemplo, debajo del marco foo1, hay 1,5 unidades vacías y 2,5 unidades ocupadas por bar. Por lo tanto, el tiempo de CPU propio de foo1 es el 37,5% de su tiempo de CPU total, es decir, 1,5 s.
  • A medida que sigues una pila de llamadas, la anchura de los marcos disminuye porque el tiempo total de CPU de un elemento llamado nunca puede ser superior al tiempo total de CPU del elemento que llama. Este comportamiento es lo que provoca la forma de llama.

    En el ejemplo, foo1 llama a bar y el tiempo de CPU total de foo1 se define como el tiempo de CPU total de bar más el tiempo de CPU propio de foo1. Por lo tanto, el tiempo total de CPU de bar no puede ser superior al tiempo total de CPU de foo1.

Siguientes pasos