GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿cómo analizar los datos de perfil de `perf Record –a` (recopilación de todo el sistema)?

Estoy usando perf desde linux-2.6.36-gentoo-r4. El /proc/sys/kernel/perf_event_paranoid se establece en 0, por lo que no debería haber problemas a partir de ahí.

Debido a que la aplicación de ejecución prolongada que estoy perfilando a veces se bloquea por alguna razón indeterminada (no pude encontrar información sobre la razón por la que dejó de funcionar), recurrí a la generación de perfiles de todo el sistema con eventos perf.

La aplicación en cuestión realiza cálculos numéricos en paralelo, utilizando MPI (Message Passing Interface) para la comunicación. Antes de ejecutar la aplicación (con mpirun ) Empecé a registrar datos de perfil de todo el sistema en uno de nodos con los que se ejecuta:

$ perf record -o perf.all.cycles,graph.data -g -e cycles -a &

Después de darme cuenta de que la aplicación se bloqueó, eliminé el perf tarea.

Se había ido

$ du -sh perf.all.cycles,graph.data 
14G     perf.all.cycles,graph.data

14 GB de datos. Lamentablemente, perf report no es compatible con -a cambiar.

¿Cómo puedo analizar los datos de perfiles de todo el sistema desde perf? herramienta ?

Simplemente ejecutando perf report no produce resultados útiles:

$ perf report -i perf.all.cycles,graph.data
#
# (For a higher level overview, try: perf report --sort comm,dso)
#

Esa es la salida total de los datos de perfil de 14 GB...

Respuesta aceptada:

Si está distribuyendo los cálculos con MPI, el uso de una herramienta compatible con MPI le brindaría resultados más sensatos:con una aplicación distribuida, es posible que tenga problemas de desequilibrio de carga, donde un proceso MPI está inactivo esperando que los datos provengan de otros procesos. . Si está perfilando exactamente ese proceso de MPI, su perfil de rendimiento será incorrecto.

Por lo tanto, el primer paso suele ser conocer el patrón de equilibrio de carga y comunicación de su programa, e identificar una entrada de muestra que le proporcione la carga de trabajo que desea (por ejemplo, uso intensivo de CPU en el rango 0). Por ejemplo, mpiP es un MPI herramienta de creación de perfiles que puede producir un informe muy completo sobre el patrón de comunicación, cuánto tiempo tomó cada llamada MPI, etc.

Luego puede ejecutar una herramienta de creación de perfiles de código en uno o más rangos de MPI seleccionados. De todos modos, usando perf en un solo rango MPI probablemente no sea una buena idea porque sus medidas contendrán también el rendimiento del código de la biblioteca MPI, que probablemente no sea lo que está buscando.


Linux
  1. Cómo usar SSH en Linux desde Android

  2. Cómo usar journalctl para analizar registros en Linux

  3. Cómo migrar de CentOS 8 a Rocky Linux 8

  4. ¿Cómo obtener máscara de red de bash?

  5. Cómo generar datos de netflow en linux

Cómo acceder a las particiones de Linux desde Windows 10

Cómo mostrar datos de un archivo de texto en Linux

Cómo quitar un comando del historial en Linux

Cómo instalar software desde la fuente en Linux

Cómo quitar (^M) caracteres de un archivo en Linux

Cómo construir el kernel de Linux desde cero