perf (a veces llamado perf_events [1] o perf tools , originalmente Performance Counters para Linux , PCL ) [2] es una herramienta de análisis de rendimiento en Linux , disponible en la versión 2.6.31 del kernel de Linux en 2009. [3] Utilidad de control del espacio de usuario , denominada perf
, se accede desde la línea de comandos y proporciona una serie de subcomandos ; es capaz de generar perfiles estadísticos de todo el sistema (tanto el kernel como el código del área de usuario).
Repositorio | https://github.com/torvalds/linux/tree/master/tools/perf |
---|---|
Escrito en | C |
Sistema operativo | Kernel de Linux |
Tipo | Monitorización y pruebas de rendimiento |
Licencia | GNU GPL |
Sitio web | perf |
Admite contadores de rendimiento de hardware , puntos de seguimiento , contadores de rendimiento de software (por ejemplo, hrtimer) y sondas dinámicas (por ejemplo, kprobes o uprobes). [4] En 2012, dos ingenieros de IBM reconocieron perf (junto con OProfile ) como una de las dos herramientas de generación de perfiles de contador de rendimiento más utilizadas en Linux. [5]
Implementación
La interfaz entre la utilidad perf y el kernel consta de una sola llamada al sistema y se realiza mediante un descriptor de archivo y una región de memoria asignada. [6] A diferencia de LTTng o versiones anteriores de oprofile , no se necesitan demonios de servicio , ya que la mayoría de las funciones están integradas en el kernel. La utilidad perf vuelca los datos sin procesar del búfer asignado al disco cuando el búfer se llena. Según R. Vitillo ( LBNL ), el perfilado realizado por perf implica una sobrecarga muy baja. [6]
A partir de 2010[actualizar], las arquitecturas que brindan soporte para contadores de hardware incluyen x86 , PowerPC 64, UltraSPARC ( III y IV ), ARM (v5, v6, v7, Cortex-A8 y -A9 ), Alpha EV56 y SuperH . [4] El uso de los registros de la última sucursal, [7] una implementación de seguimiento de sucursales disponible en las CPU Intel desde Pentium 4 , está disponible como parche. [6] Desde la versión 3.14 de la línea principal del kernel de Linux , lanzada el 31 de marzo de 2014, perf también admite el límite de potencia promedio en ejecución (RAPL) para mediciones de consumo de energía, que está disponible como una característica de ciertas CPU Intel. [8] [9] [10]
Perf es compatible de forma nativa en muchas distribuciones populares de Linux, incluyendo Red Hat Enterprise Linux (desde su versión 6 lanzada en 2010) [11] y Debian en el paquete linux-tools-common (desde su versión Squeeze lanzada en 2011). [12]
Subcomandos
perf se usa con varios subcomandos:
- stat : mide el recuento total de eventos para un solo programa o para el sistema durante algún tiempo
- arriba : vista dinámica similar a la parte superior de las funciones más populares
- registro : medir y guardar datos de muestreo para un solo programa [13]
- informe : analiza el archivo generado por el registro de rendimiento; Puede generar un perfil plano o gráfico. [13]
- anotar : anotar fuentes o ensamblaje
- sched : seguimiento / medición de las acciones y latencias del planificador [14]
- lista : lista de eventos disponibles
Crítica
La documentación de perf no es muy detallada (a partir de 2014); por ejemplo, no documenta la mayoría de los eventos ni explica sus alias (a menudo se utilizan herramientas externas para obtener nombres y códigos de eventos [15] ). [16] Las herramientas Perf tampoco pueden perfilar basándose en el tiempo real del reloj de pared. [dieciséis]
Seguridad
El subsistema perf de los kernels de Linux desde 2.6.37 hasta 3.8.8 y el kernel de RHEL6 2.6.32 contenía una vulnerabilidad de seguridad ( CVE - 2013-2094 ), que fue aprovechada para obtener privilegios de root por un usuario local. [17] [18] El problema se debió a que se estaba utilizando un tipo incorrecto (int de 32 bits en lugar de 64 bits) en la ruta del código de verificación event_id. [19]
Ver también
- Lista de herramientas de análisis de rendimiento
- OProfile
- Interfaz de programación de aplicaciones de rendimiento
- Elaboración de perfiles (programación informática)
Referencias
- ^ Vince Weaver, la página web no oficial de eventos de rendimiento de Linux
- ^ Características y gastos generales del evento de rendimiento de Linux // 2013 FastPath Workshop, Vince Weaver
- ^ Jake Edge, Perfcounters agregados a la línea principal , LWN 1 de julio de 2009, "Se incluyen perfcounters en la línea principal durante la ventana de combinación 2.6.31 recientemente completada"
- ^ a b Arnaldo Carvalho de Melo, Las nuevas herramientas 'perf' de Linux, presentación de Linux Kongress, septiembre de 2010
- ^ A. Zanella, R. Arnold. Evalúe el rendimiento de Linux en POWER. Analizar el rendimiento con herramientas de Linux , 12 de junio de 2012 // Biblioteca técnica de IBM DeveloperWorks
- ^ a b c Roberto A. Vitillo ( LBNL ). DESARROLLO DE HERRAMIENTAS DE RENDIMIENTO , 16 de junio de 2011, presentación de la conferencia "Computación futura en física de partículas"
- ^ Manual del desarrollador de software de arquitecturas Intel® 64 e IA-32 Volumen 3B: Guía de programación del sistema, Parte 2 . Intel. Junio de 2009. p. 19-2 vol. 3.
- ^ Jake Edge (9 de abril de 2014). "Muchas funciones nuevas de rendimiento" . LWN.net . Consultado el 22 de abril de 2014 .
- ^ Jacob Pan (2 de abril de 2013). "Controlador RAPL (Running Average Power Limit)" . LWN.net . Consultado el 22 de abril de 2014 .
- ^ "kernel / git / torvalds / linux.git - árbol de fuentes del kernel de Linux" . Git.kernel.org. 2014-01-20 . Consultado el 31 de marzo de 2014 .
- ^ 6.4. Performance Counters for Linux (PCL) Tools y perf // RHEL Developer Guide
- ^ "Debian - Detalles del paquete linux-tools-2.6.32 en squeeze" . Packages.debian.org . Consultado el 31 de marzo de 2014 .
- ^ a b Formato de archivo perf de Urs Fässler Archivado el 14 de diciembre de 2012 en Wayback Machine , CERN OpenLab , 2011
- ^ Ingo Molnar , 'perf sched': utilidad para capturar, medir y analizar las latencias y el comportamiento del programador , 17 de septiembre de 2009
- ^ Cómo monitorear la gama completa de eventos de rendimiento de la CPU // Bojan Nikolic, 2012
- ^ a b Robert Haas (PostgreSQL), perf: lo bueno, lo malo, lo feo // 06 de junio de 2012
- ^ Michael Larabel (15 de mayo de 2013). "Nueva vulnerabilidad del kernel de Linux explotada" . Phoronix.
- ^ corbet (15 de mayo de 2013). "Vulnerabilidad de raíz local en el kernel" . LWN.
- ^ Joe Damato (20 de mayo de 2013). "Una mirada más cercana a un error reciente de escalada de privilegios en Linux (CVE-2013-2094)" .
enlaces externos
- wiki de perf en kernel.org
- Arnaldo Carvalho de Melo, Las nuevas herramientas 'perf' de Linux, presentación de Linux Kongress, septiembre de 2010
- Perfilado del kernel de Linux con perf tutorial
- Gráficos de soporte de PMU de hardware : consulte la columna perf_event
- perf Ejemplos de Brendan Gregg