stringtranslate.com

rendimiento (Linux)

perf (a veces llamado perf_events [1] o perf tools , originalmente Performance Counters for Linux , PCL ) [2] es una herramienta de análisis de rendimiento en Linux , disponible a partir de la versión del kernel de Linux 2.6.31 en 2009. [3] La utilidad de control del espacio de usuarioperf , llamada , se accede desde la línea de comandos y proporciona una serie de subcomandos; es capaz de realizar perfiles estadísticos de todo el sistema (código del kernel y del espacio de usuario).

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 a perf (junto con OProfile ) como una de las dos herramientas de creación de perfiles de contadores de rendimiento más utilizadas en Linux. [5]

Implementación

La interfaz entre la utilidad perf y el núcleo consta de una sola llamada al sistema y se realiza a través de un descriptor de archivo y una región de memoria asignada. [6] A diferencia de LTTng o versiones anteriores de oprofile , no se necesitan daemons de servicio , ya que la mayoría de las funciones están integradas en el núcleo. 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 ), la creación de perfiles realizada por perf implica una sobrecarga muy baja. [6]

A partir de 2010 , 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 Last Branch Records, [7] una implementación de seguimiento de ramas 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 con muchas distribuciones populares de Linux, incluidas Red Hat Enterprise Linux (desde su versión 6 lanzada en 2010) [11] y Debian en el paquete linux-tools-common (desde Debian 6.0 (Squeeze) lanzado en 2011). [12]

Subcomandos

perf se utiliza con varios subcomandos:

Crítica

La documentación de perf no es muy detallada (a fecha 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 de perf tampoco pueden crear perfiles basados ​​en la hora real del reloj. [16]

Seguridad

El subsistema perf de los kernels Linux desde 2.6.37 hasta 3.8.8 y el kernel RHEL6 2.6.32 contenía una vulnerabilidad de seguridad ( CVE - 2013-2094), que fue explotada para obtener privilegios de root por un usuario local. [17] [18] El problema se debía a que se utilizaba un tipo incorrecto (int de 32 bits en lugar de 64 bits) en la ruta del código de verificación event_id. [19]

Véase también

Referencias

  1. ^ Vince Weaver, La página web no oficial de eventos de Linux Perf
  2. ^ Características y gastos generales de los eventos de rendimiento de Linux // Taller FastPath 2013, Vince Weaver
  3. ^ Jake Edge, Contadores de rendimiento agregados a la línea principal, LWN 1 de julio de 2009, "Contadores de rendimiento que se incluyen en la línea principal durante la ventana de fusión 2.6.31 recientemente completada"
  4. ^ de Arnaldo Carvalho de Melo, Las nuevas herramientas 'perf' de Linux, presentación en Linux Kongress, septiembre de 2010
  5. ^ A. Zanella, R. Arnold. Evaluación del rendimiento de Linux en POWER. Análisis del rendimiento mediante herramientas de Linux, 12 de junio de 2012 // Biblioteca técnica de IBM DeveloperWorks
  6. ^ abc Roberto A. Vitillo ( LBNL ). PERFORMANCE TOOLS DEVELOPMENTS, 16 de junio de 2011, presentación de la conferencia "Computación del futuro en física de partículas"
  7. ^ 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ág. 19-2 vol. 3.
  8. ^ Jake Edge (9 de abril de 2014). "Muchas nuevas funciones de rendimiento". LWN.net . Consultado el 22 de abril de 2014 .
  9. ^ Jacob Pan (2 de abril de 2013). "Controlador RAPL (Running Average Power Limit)". LWN.net . Consultado el 22 de abril de 2014 .
  10. ^ "kernel/git/torvalds/linux.git - Árbol de código fuente del kernel de Linux". Git.kernel.org. 20 de enero de 2014. Consultado el 31 de marzo de 2014 .
  11. ^ 6.4. Contadores de rendimiento para Linux (PCL) Herramientas y perf // Guía para desarrolladores de RHEL
  12. ^ "Debian - Detalles del paquete linux-tools-2.6.32 en Squeeze". Packages.debian.org . Consultado el 31 de marzo de 2014 .
  13. ^ Formato de archivo perf de Urs Fässler Archivado el 14 de diciembre de 2012 en Wayback Machine , CERN OpenLab , 2011
  14. ^ Ingo Molnar , 'perf sched': Utilidad para capturar, medir y analizar las latencias y el comportamiento del programador, 17 de septiembre de 2009
  15. ^ Cómo monitorear la gama completa de eventos de rendimiento de la CPU // Bojan Nikolic, 2012
  16. ^ de Robert Haas (PostgreSQL), perf: lo bueno, lo malo, lo feo // 6 de junio de 2012
  17. ^ Michael Larabel (15 de mayo de 2013). "Nueva vulnerabilidad del kernel de Linux explotada". Phoronix.
  18. ^ corbet (15 de mayo de 2013). "Vulnerabilidad de raíz local en el núcleo". LWN.
  19. ^ Joe Damato (20 de mayo de 2013). "Una mirada más de cerca a un reciente error de escalada de privilegios en Linux (CVE-2013-2094)".

Enlaces externos