Grafos de Flame
Cloud Profiler muestra los datos de creación de perfiles con gráficos tipo llama. A diferencia de los árboles y los gráficos, los gráficos tipo llama hacen un uso eficiente del espacio de la pantalla mediante la representación de una gran cantidad de información en un formato compacto y legible.
Con el objetivo de presentar los gráficos tipo llama, en esta página se brinda una ilustración de cómo convertir un árbol en un gráfico tipo llama y se resumen las características clave de este tipo de gráficos.
Crea un gráfico tipo llama
Para crear un gráfico tipo llama a partir de un árbol, completa los pasos que se muestran en el siguiente diagrama:
Quita del árbol las flechas que indican las llamadas a función.
Reemplaza cada nodo del árbol con un marco.
Los marcos tienen forma rectangular y todos tienen la misma altura. Para el ejemplo de esta página, el tiempo de CPU total utilizado por la función nombrada en el marco determina el ancho del marco.
En la siguiente tabla, se describe el seudocódigo de cada una de las funciones. El trabajo intensivo de CPU realizado 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 quitar el espacio vertical entre los marcos y alinearlos a la izquierda mientras se conservan las secuencias de llamadas. De manera opcional, puedes definir un esquema de colores y dar color a los marcos según la definición. Por ejemplo, puedes dar color a los marcos por paquete, por tiempo de CPU total, por tiempo de CPU propio o por una medida diferente.
Después de quitar el exceso de espacios en blanco y de dar color a los marcos por tiempo de CPU propio, el gráfico tipo llama ahora se verá de la siguiente manera:
Ten en cuenta que las pilas de llamadas para
foo1
yfoo2
se conservaron, aunque la pila de llamadas que comienza confoo2
ahora está junto al marcofoo1
.
Resumen
Este ejemplo simple ilustra lo siguiente:
- Los gráficos tipo llama son una representación compacta de un árbol, y puedes recrear una pila de llamadas mediante el seguimiento de marcos desde arriba hacia abajo.
- Los marcos nombran una función, y el ancho del marco es la medida relativa del tiempo de CPU total de esa función.
En este ejemplo, debido a que el tiempo de CPU total de
foo2
equivale a un tercio del tiempo de CPU total demain
, el marcofoo2
tiene un tercio del ancho del marcomain
. - El ancho del espacio vacío debajo de un marco es la medida relativa del tiempo de CPU propio de la función nombrada en el marco.
Por ejemplo, debajo del marco
foo1
, 1.5 unidades están vacías y 2.5 unidades están ocupadas porbar
. Por lo tanto, el tiempo de CPU propio defoo1
equivale al 37.5% de su tiempo de CPU total, o 1.5 s. A medida que sigues una pila de llamadas, el ancho de los marcos disminuye porque el tiempo de CPU total de un destinatario nunca puede ser superior al tiempo de CPU total del emisor. Este comportamiento es lo que causa la forma tipo 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 de CPU total debar
no puede ser superior al tiempo de CPU total defoo1
.
¿Qué sigue?
- Selecciona los perfiles que se analizarán
- Cómo interactuar con el gráfico tipo llama
- Filtra el gráfico tipo llama
- Enfoca el gráfico tipo llama
- Comparar perfiles