Filtra el gráfico tipo llama

Cloud Profiler te permite agregar filtros para controlar cómo se muestra la información en los perfiles seleccionados. Por ejemplo, puedes agregar un filtro para ocultar determinados marcos o pilas de llamadas. Agregar y quitar filtros no cambia tu conjunto de perfiles seleccionados.

Cada filtro se especifica mediante un FILTER-OPTION predefinido que se vincula con un VALUE definido por el usuario:

[FILTER-OPTION] : [VALUE]

Cada filtro que agregas se muestra en la barra de filtros. En este ejemplo, hay un filtro que muestra Metric : Bytes:

Muestra un filtro con la opción de métrica y el valor de bytes.

Profiler crea automáticamente un filtro con un FILTER-OPTION de Metric y un VALUE según el tipo de perfil seleccionado. Puedes cambiar VALUE para algunos tipos de perfiles. No puedes quitar este filtro.

Para agregar un filtro, usa uno de los siguientes enfoques:

  • Haz clic en Filtros , selecciona una opción de la lista y, luego, ingresa el valor.
  • Haz clic en el texto gris Agregar filtro de datos de perfil en la barra de filtros y, luego, ingresa el valor y la opción de filtro.
  • En las opciones de filtro Enfocar, Mostrar desde marco y Mostrar pilas, también puedes colocar el puntero en el marco y, luego, seleccionar la opción de la información sobre la herramienta de marcos.

Para quitar un filtro, haz clic en Cerrar en el filtro.

Cuando preparas los datos para mostrar, Profiler busca coincidencias entre un marco y un filtro. Cuando se produce una coincidencia, Profiler usa FILTER-OPTION para determinar qué acción ejecutar. Un marco coincide con el filtro cuando el nombre de la función del marco o el nombre de archivo de la fuente contiene VALUE. Se realiza una comparación que distingue entre mayúsculas y minúsculas. Por ejemplo, si el filtro es Hide frames : oo, los marcos con funciones llamadas foo, foo1 y busyloop coinciden con el gráfico tipo llama.

Métrica

Para configurar el modo de agregación del tipo de perfil, usa el filtro Métrica. Por ejemplo, si seleccionas un tipo de perfil de Montón, tienes la opción de visualizar los datos en términos de Bytes y Objetos.

Las opciones disponibles para el filtro Métrica dependen del lenguaje de programación y del Tipo de perfil seleccionado:

  • Para los perfiles de tiempo de CPU, la única opción es tiempo de CPU.
  • Para los perfiles de Montón, estas son las opciones:

    • Bytes
    • Objetos
  • Para los perfiles de Montón asignado, estas son las opciones:

    • Total de bytes asignados
    • Total de objetos asignados
  • Para los perfiles de Tiempo, estas son las opciones:

    • Recuento
    • Tiempo
  • Para los perfiles de Subproceso, la única opción es Goroutine.

  • Para los perfiles de Contención, estas son las opciones:

    • Retraso
    • Contenciones

Para obtener más información sobre los tipos de métricas de generación de perfiles, consulta Conceptos sobre generación de perfiles.

Por ejemplo, en la siguiente captura de pantalla, se muestra el consumo de CPU de un programa:

Gráfico del uso de CPU de Profiler

Aquí, puedes ver que la rutina busyloop llama a foo1 y foo2, las cuales llaman a otras rutinas. Puedes agregar filtros para restringir aún más el gráfico solo a los datos que te interesen.

Enfoque

Cuando usas el filtro Enfocar, seleccionas una sola función y el gráfico tipo llama muestra las rutas de código que van hacia esa función específica y hacia afuera de ella.

Para obtener detalles sobre cómo enfocar el gráfico y cómo interpretar los resultados, consulta Enfoca el gráfico tipo llama.

Muestra pilas

Para mostrar todas las pilas de llamadas que contienen un marco que coincide con el valor del filtro y ocultar todas las demás, usa el filtro Mostrar pilas. El gráfico muestra los emisores y destinatarios de la función, es decir, todo lo que llama a la función coincidente y las llamadas que esta realiza.

Este filtro realiza una prueba de substring que distingue entre mayúsculas y minúsculas. Se produce una coincidencia si la función de marco contiene el valor de filtro.

Para restringir el gráfico de uso de CPU del ejemplo anterior a fin de mostrar solo las pilas de llamadas que involucran la función foo1, configura un filtro Show stacks (Mostrar pilas) para foo1:

Gráfico del uso de CPU de Profiler filtrado con pilas de programas

Oculta pilas

Oculta todas las pilas de llamadas que contengan un marco que coincida con el valor del filtro. Este filtro suele ser útil cuando deseas ocultar pilas que no son interesantes. Por ejemplo, es común agregar un filtro Hide stacks: unsafe.park en aplicaciones de Java.

Este filtro realiza una prueba de substring que distingue entre mayúsculas y minúsculas. Se produce una coincidencia si la función de marco contiene el valor de filtro.

Muestra desde el marco

Para mostrar todas las pilas de llamadas, a partir del marco que coincide con el valor del filtro y ocultar todas las demás, usa el filtro Mostrar desde marco. El gráfico resultante muestra las pilas de llamadas de la función nombrada hacia abajo. Este filtro es útil si se llama a tu función desde muchos lugares y deseas ver el consumo total atribuible a ella.

Por ejemplo, para mostrar solo las llamadas que se originan en la función baz, configura un filtro Show from frame (Mostrar desde marco) para baz:

Gráfico del uso de CPU de Profiler filtrado con Mostrar desde marco

Este filtro realiza una prueba de substring que distingue entre mayúsculas y minúsculas. Se produce una coincidencia si la función de marco contiene el valor de filtro.

Oculta marcos

Para ocultar todos los marcos que coincidan con el valor del filtro, usa el filtro Ocultar marcos. El gráfico muestra los emisores de la función y todos los destinatarios de la función se recopilan juntos. Este filtro es útil para quitar marcos irrelevantes del gráfico.

Por ejemplo, para ocultar los marcos de foo1 y foo2, configura un filtro Hide frames (Ocultar marcos) para foo. Tanto foo1 como foo2 coinciden, por lo que se quitarán del gráfico. Debido a que ambos llaman a las rutinas bar y baz, los datos para cada una de esas funciones se agregan juntos.

Gráfico del uso de CPU de Profiler filtrado para ocultar marcos

Este filtro realiza una prueba de substring que distingue entre mayúsculas y minúsculas. Se produce una coincidencia si la función de marco contiene el valor de filtro.

Destaca marcos

Para destacar todos los marcos cuyos nombres de función coinciden con el valor del filtro, usa el filtro Destacar. La función permanece en el modo de color normal, pero las secuencias de llamadas tienen un color más tenue.

Por ejemplo, aquí se muestra un gráfico sin destacar:

Gráfico de generación de perfiles sin destacar

Este es el mismo gráfico con la función baz destacada solicitada:

Gráfico de generación de perfiles con destacado

Este filtro realiza una prueba de substring que distingue entre mayúsculas y minúsculas. Se produce una coincidencia si la función de marco contiene el valor de filtro.

Modo de color

De forma predeterminada, el color del marco corresponde, cuando es posible, al paquete de la función. Si la información del paquete no está disponible, como en Node.js, los nombres de los archivos de origen se usan para aplicar color a los bloques de funciones. Con la configuración predeterminada, un cambio en el color del marco de la pila de llamadas significa una transición de un paquete a otro. La opción predeterminada corresponde al filtro Modo de color con un valor de Nombre.

Para cambiar el color de los marcos en el gráfico tipo llama por el consumo de una función y sus elementos secundarios, agrega un filtro de Color Mode (Modo de color) con el valor Total. Si se llama a una función mediante varias pilas de llamadas, el color se determina por el consumo de métricas de todas las pilas de llamadas. Por ejemplo, main y busyloop están marcadas en color rojo. Estos dos marcos consumen más tiempo de CPU. Los marcos etiquetados como foo2 y baz son de color naranja intenso, mientras que los de etiqueta foo1 son de color naranja. Los marcos para bar y load son los de color naranja más claros. En este gráfico tipo llama, se ilustra que foo2 consume más tiempo de CPU que foo1, pero menos que busyloop:

Modo de color completo

Para cambiar el color de los marcos en el gráfico tipo llama según el consumo de métricas de la función, pero excluir el consumo de métricas de sus elementos secundarios, agrega un filtro de Color Mode (Modo de color) con el valor Propio. Por ejemplo, este filtro muestra que la función baz consume más tiempo de CPU que cualquier otra función:

Modo de color propio

¿Qué sigue?