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:
Quita del árbol las flechas que indican llamadas a funciones.
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 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:
Observa que las pilas de llamadas de
foo1
yfoo2
se han conservado, aunque la pila de llamadas que empieza porfoo2
ahora está junto al marco defoo1
.
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 demain
, el fotograma defoo2
tiene un tercio de la anchura del fotograma demain
. - 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 porbar
. Por lo tanto, el tiempo de CPU propio defoo1
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 abar
y el tiempo de CPU total defoo1
se define como el tiempo de CPU total debar
más el tiempo de CPU propio defoo1
. Por lo tanto, el tiempo total de CPU debar
no puede ser superior al tiempo total de CPU defoo1
.
Siguientes pasos
- Seleccionar los perfiles que se van a analizar
- Interactuar con el gráfico tipo llamas
- Filtrar el gráfico tipo llamas
- Centrar el gráfico tipo llamas
- Comparar perfiles