Filtrar el gráfico tipo llamas

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

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

[FILTER-OPTION] : [VALUE]

Cada filtro que añadas se mostrará 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 en función del tipo de perfil seleccionado. Puedes cambiar VALUE en algunos tipos de perfil. No puedes quitar este filtro.

Para añadir un filtro, sigue uno de estos procedimientos:

  • Haga clic en Filtros , seleccione una opción de la lista y, a continuación, introduzca el valor.
  • Haga clic en el texto gris Añadir filtro de datos de perfil en la barra de filtros y, a continuación, introduzca la opción y el valor del filtro.
  • En las opciones de filtro Enfoque, Mostrar desde el marco y Mostrar pilas, también puedes colocar el puntero en el marco y, a continuación, seleccionar la opción en la descripción emergente del marco.

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

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

Métrica

Para definir el modo de agregación del tipo de perfil, usa el filtro Métrica. Por ejemplo, si seleccionas el tipo de perfil Heap, puedes 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:

  • En los perfiles de tiempo de CPU, la única opción es Tiempo de CPU.
  • En el caso de los perfiles de Heap, las opciones son las siguientes:

    • Bytes
    • Objetos
  • En el caso de los perfiles Montículo asignado, las opciones son las siguientes:

    • Total de bytes asignados
    • Total de objetos asignados
  • En el caso de los perfiles de Tiempo real, las opciones son las siguientes:

    • Recuento
    • Tiempo real
  • En los perfiles de Hilos, la única opción es Goroutine.

  • En los perfiles de Contención, las opciones son las siguientes:

    • Retraso
    • Controversias

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

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

Gráfico del profiler del uso de la CPU

Aquí puedes ver que la rutina busyloop llama a foo1 y foo2, y que ambas llaman a otras rutinas. Puede añadir filtros para restringir aún más el gráfico y mostrar solo los datos que le interesan.

Enfocar

Cuando usas el filtro Enfoque, seleccionas una sola función y el gráfico de llamas muestra las rutas de código que entran y salen de esa función específica.

Para obtener información sobre cómo centrar el gráfico e interpretar los resultados, consulta Centrar el gráfico tipo llamas.

Mostrar pilas

Para mostrar todas las pilas de llamadas que contengan un marco que coincida con el valor del filtro y ocultar todas las demás pilas de llamadas, usa el filtro Mostrar pilas. El gráfico muestra las funciones que llaman a la función y las funciones a las que llama, es decir, todo lo que llama a la función coincidente y todo a lo que llama.

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

Para restringir el gráfico de uso de CPU del ejemplo anterior para que solo muestre las pilas de llamadas que implican la función foo1, define un filtro Mostrar pilas para foo1:

Gráfico del generador de perfiles del uso de CPU filtrado con Mostrar pilas

Ocultar pilas

Oculta todas las pilas de llamadas que contengan un marco que coincida con el valor del filtro. Este filtro suele ser útil cuando quieres ocultar pilas que no te interesan. Por ejemplo, en las aplicaciones Java, es habitual añadir un filtro Hide stacks: unsafe.park.

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

Mostrar desde el marco

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

Por ejemplo, para mostrar solo las llamadas que proceden de la función baz, define un filtro Mostrar desde marco para baz:

Gráfico del profiler del uso de la CPU filtrado con la opción Mostrar desde marco

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

Ocultar marcos

Para ocultar todos los fotogramas que coincidan con el valor del filtro, usa el filtro Ocultar fotogramas. El gráfico muestra las funciones que llaman a la función seleccionada. Las funciones a las que llama la función seleccionada se agrupan. Este filtro es útil para quitar del gráfico los fotogramas que no sean relevantes.

Por ejemplo, para ocultar los marcos de foo1 y foo2, define un filtro Ocultar marcos para foo. Tanto foo1 como foo2 coinciden, por lo que se eliminan del gráfico. Como ambas llaman a las rutinas bar y baz, los datos de cada una de esas funciones se agregan.

Gráfico del generador de perfiles del uso de la CPU filtrado con la opción de ocultar marcos

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

Resaltar

Para destacar todos los marcos cuyos nombres de función coincidan con el valor del filtro, usa el filtro Destacar. La función permanece en el modo de color normal, pero las secuencias de llamadas se colorean con tonos más tenues.

Por ejemplo, aquí tienes un gráfico sin resaltado:

Gráfico de perfil sin resaltado

Aquí tienes el mismo gráfico con el resaltado solicitado para la función baz:

Gráfico de perfil con resaltado

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

Modo de color

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

Para colorear los marcos del gráfico de llamas según el consumo de una función y sus elementos secundarios, añade un filtro Modo de color con el valor Total. Si se llama a una función a través de varias pilas de llamadas, el color se determina en función del consumo de métricas de todas las pilas de llamadas. Por ejemplo, main y busyloop están en rojo. Estos dos marcos consumen la mayor parte del tiempo de CPU. Los marcos etiquetados como foo2 y baz son de color naranja intenso, mientras que el marco etiquetado como foo1 es de color naranja más claro. Los marcos de bar y load son los más ligeros. Este gráfico de llamas muestra que foo2 consume más tiempo de CPU que foo1, pero menos que busyloop:

Total del modo de color

Para colorear los marcos del gráfico de llamas según el consumo de métricas de la función, pero excluir el consumo de métricas de sus elementos secundarios, añade un filtro 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

Siguientes pasos