lunes, 23 de febrero de 2015

Monitoreo y analisis de performance en Linux utilizando Perf (introducción)

Bueno esta es una herramienta relativamente "nueva" por lo menos para mi,  extremadamente potente.

Ahora al grano que es Perf:
Algunas veces llamado Perf_events o perf tools, es una herramienta de análisis de performance  disponible desde la versión de kernel 2.6.31, perf se accesa como cualquier comando linux y provee de una serie de subcomandos.

Perf puede obtener varios datos desde aquellos que son parte del sistema o bien procesos realizados por el usuario, proporciona contadores de hardware, puntos de rastreo (tracepoints), contadores de perfomance de software, pruebas dinamicas, entre otros.

La mayoría de la funcionalidad de Perf se encuentra integrada desde el kernel.
Perf viene por defecto en Red Hat 6 en adelante y Debian desde la versión Squeeze asi como en muchas otras variedades de linux, en fedora lo tuve que instalar.

Perf es una herramienta avanzada quizá en dado momento mas útil para  un administrador que desea hacer algo de tunning al sistema o bien un desarrollador que quiere optimizar a gran detalle su aplicación y el como funcione en el sistema.

la estructura del comando perf es asi:
 
perf [--version] [--help] COMMAND [ARGS]


Perf es utilizado con algunos de los siguientes subcomandos, puedes consultar la lista completa tecleando (perf o perf --help):

perf list: que nos muestra una lista de todos los eventos disponibles de los que        podemos contar, me parece que hay mas de 600.




perf top : muestra de manera dinámica varios de los eventos, muy similar a top pero enfocado a los distintos eventos del sistema en el siguiente ejemplo: cpu-clock

perf stat -p PID sleep 5: el ejemplo anterior muestra el contador de estadísticas de un proceso determinado por ejemplo vamos a ver como se comporta Xorg durante 10 segundos.


o bien podemos utilizar perf stat -a sleep 5 para ver las estadísticas completas de todo el sistema por 5 seg.


 perf record: guarda una muestra de una aplicacion determinada en el archivo   perf.data por ejemplo vamos a ver una muestra del las instrucciones del kernel

perf record -e cycles:k -a -- sleep 5
 
con el comando anterior perf capturara durante 5 segundos los eventos que ocurren
al kernel, al terminar se genera perf.data

(si queremos colectar estadísticas globales de todos los cpus:
perf record -a sleep 5)
  
ahora bien veamos el contenido del archivo con el comando:
perf report
  
En la imagen de arriba lo que se puede apreciar es que la mayoría del cpu que consume el kernel esta distribuido entre el swapper y Xorg  y podemos ver el porcentaje que consume cada llamada al sistema.

Perf tiene una enorme cantidad de utilierias los invito a que visiten el siguiente link para mas ejemplos:
 

y finalmente anexo este tutorial con muchas mas opciones para manejar perf
https://perf.wiki.kernel.org/index.php/Tutorial

Existe ademas otra opción para realizar algunas pruebas de estrés o benchmarks con el comando: perf bench


Perf tiene un equivalente el Solaris mejor conocido como Dtrace, que de igual forma es una potente herramienta para analizar el performances de los procesos y el sistema.

La forma de utilizar perf es muy variada pero espero haber explicado una pequeña introducción concisa y útil para que puedan seguir avanzando, existen manuales completos para esta utilería e ire agregando mas detalles conforme conosca mas de esta utilería, cabe mencionar que Brendan a utilizado los reportes generados en perf, para realizar graficas mucho mas entendibles para el monitoreo de aplicaciones y procesos.

No hay comentarios.:

Publicar un comentario