Perf- Una herramienta de monitoreo y análisis de rendimiento para Linux

Perf- Una herramienta de monitoreo y análisis de rendimiento para Linux

Cuando hablamos de rendimiento en la informática, nos referimos a la relación entre nuestros recursos y las tareas que nos permiten completar en un período de tiempo determinado.

Perf- Una herramienta de monitoreo y análisis de rendimiento para Linux

En un día de competencia sin feroz entre las empresas, es importante que aprendamos cómo usar lo que tenemos lo mejor de su capacidad. El desperdicio de recursos de hardware o software, o la falta de capacidad para saber cómo usarlos de manera más eficiente, termina siendo una pérdida que simplemente no podemos pagar si queremos estar en la parte superior de nuestro juego.

Al mismo tiempo, debemos tener cuidado de no llevar nuestros recursos a un límite donde el uso sostenido generará daños irreparables.

En este artículo le presentaremos una herramienta de análisis de rendimiento relativamente nueva y proporcionaremos consejos que puede usar para monitorear sus sistemas Linux, incluidos hardware y aplicaciones. Esto lo ayudará a asegurarse de que funcionen para que sea capaz de producir los resultados deseados sin desperdiciar recursos o su propia energía.

Introducción e instalación de PERF en Linux

Entre otros, Linux proporciona una herramienta de monitoreo y análisis de rendimiento llamada convenientemente perfil. Entonces, ¿qué distingue? perfil De otras herramientas conocidas con las que ya estás familiarizado?

La respuesta es que perfil Proporciona acceso a la unidad de monitoreo de rendimiento en la CPU y, por lo tanto, nos permite echar un vistazo al comportamiento del hardware y sus eventos asociados.

Además, también puede monitorear eventos de software y crear informes de los datos que se recopilan.

Puedes instalar perfil En distribuciones basadas en RPM con:

# yum Update && Yum Install Perf [Cento / Rhel / Fedora] # dnf update && dnf install perf [Fedora 23+ liberaciones] 

En Debian y derivados:

# Sudo Aptitude Update && Sudo Aptitude Instale Linux-Tools-$ (Uname -R) Linux-Tools-Generic 

Si desanimado -r En el comando anterior devuelve cadenas adicionales además de la versión real (3.2.0-23-Genérico En mi caso), es posible que tengas que escribir Linux-Tools-3.2.0-23 en lugar de usar la salida de tu nombre.

También es importante tener en cuenta que perfil rendimiento de resultados incompletos cuando se ejecutan en un invitado en la parte superior de Virtualbox o VMware, ya que no permiten el acceso a los contadores de hardware como otras tecnologías de virtualización (como KVM o XEN).

Además, tenga en cuenta que algunos perfil Los comandos pueden restringirse a la raíz de forma predeterminada, que se puede deshabilitar (hasta que se reinicie el sistema) haciendo:

# echo 0>/proc/sys/kernel/perf_event_paranoid 

Si necesita deshabilitar paranoico modo permanente, actualice la siguiente configuración en /etc/sysctl.confusión archivo.

núcleo.perf_event_paranoid = 0 

Subcomandos

Una vez que haya instalado perfil, Puede consultar su página Man para obtener una lista de subcomandos disponibles (puede pensar en los subcomandos como opciones especiales que abren una ventana específica al sistema). Para obtener resultados mejores y más completos, use perfil ya sea como raíz o sudo.

Lista de perforación

La lista de perf (sin opciones) devuelve todos los tipos de eventos simbólicos (lista larga). Si desea ver la lista de eventos disponibles en una categoría específica, use perfil Lista seguida del nombre de la categoría ([HW | SW | Cache | TracePoint | PMU | Event_Glob]), como:

Mostrar lista de eventos predefinidos de software en Linux:

# Lista de perfil SW 
Lista del software Eventos predefinidos en Linux

Estadística

perfil STAT ejecuta un comando y recopila estadísticas de rendimiento de Linux durante la ejecución de dicho comando. ¿Qué sucede en nuestro sistema cuando ejecutamos dd?

# perf stat dd if =/dev/cero of = test.ISO BS = 10m recuento = 1 
Recopila estadísticas de rendimiento del comando Linux

Las estadísticas que se muestran arriba indican, entre otras cosas:

  1. La ejecución del dd comando tomado 21.812281 milisegundos de CPU. Si dividimos este número por el valor de "tiempo de segundos transcurrido" a continuación (23.914596 milisegundos), produce 0.912 (CPU utilizada).
  2. Mientras el comando fue ejecutado, 15 Los interruptores de contexto (también conocidos como interruptores de proceso) indican que las CPU se cambiaron 15 veces de un proceso (o hilo) a otro.
  3. 2 Las migraciones de la CPU son el resultado esperado cuando en una CPU de 2 núcleos, la carga de trabajo se distribuye uniformemente entre el número de núcleos.
    Durante ese tiempo (21.812281 milisegundos), el número total de ciclos de la CPU que se consumieron fue 62,025,623, que dividió por 0.021812281 segundos dan 2.843 GHz.
  4. Si dividimos el número de ciclos por el recuento de instrucciones totales, obtenemos 4.9 Ciclos por instrucción, lo que significa que cada instrucción tardó casi 5 ciclos de CPU en completarse (en promedio). Podemos culpar a esto (al menos en parte) por el número de ramas y las sucursales (ver más abajo), que terminan malgastando o utilizando los ciclos de CPU.
  5. Como se ejecutó el comando, un total de 3,552,630 Se encontraron ramas. Esta es la representación a nivel de CPU de puntos de decisión y bucles en el código. Cuantas más ramas, menor serán. Para compensar esto, todas las CPU modernas intentan predecir el flujo que tomará el código. 51,348 Las misiones de las ramas indican que la función de predicción era incorrecta 1.45% del tiempo.

El mismo principio se aplica a la recopilación de estadísticas (o en otras palabras, perfiles) mientras se ejecuta una aplicación. Simplemente inicie la aplicación deseada y después de un período de tiempo razonable (que depende de usted) cierre, y perfil mostrará las estadísticas en la pantalla. Al analizar esas estadísticas, puede identificar posibles problemas.

Top de perforación

Top de perforación es similar al comando superior, ya que muestra un perfil del sistema casi en tiempo real (también conocido como análisis en vivo).

Con el -a Opción Mostrará todos los tipos de eventos conocidos, mientras que el -mi La opción le permitirá elegir una categoría de evento específica (como se devuelve por lista de perforación)

Mostrará todos los ciclos del evento.

perf top -a 

Mostrará todos los eventos relacionados con la CPU.

Perf Top -E CPU -Clock 
Análisis en vivo de la actuación de Linux

La primera columna en la salida anterior representa el porcentaje de muestras tomadas desde el comienzo de la ejecución, agrupada por símbolo de función y objeto compartido. Hay más opciones disponibles en Hombre perf-top.

Récord

perfil El registro ejecuta un comando y guarda los datos estadísticos en un archivo llamado perfil.datos Dentro del directorio de trabajo actual. Se ejecuta de manera similar a estadística.

Tipo récord seguido de un comando:

# perf registro dd if =/dev/null of = test.ISO BS = 10m recuento = 1 
Registro de datos estadísticos de comando

Informe perfor

Informe perfor formatea los datos recopilados perfil.datos arriba en un informe de rendimiento:

# Informe de sudo perf 
Informe de rendimiento de PERF Linux

Todo lo anterior subcomandos tener una página de hombre dedicada que se pueda invocar como:

# Hombre Perf-subcomando 

dónde subcomando es cualquiera lista, estadística, arriba, registro, o informe. Estos son los subcomandos más utilizados; Otros se enumeran en la documentación (consulte la sección Resumen para el enlace).

Resumen

En esta guía te hemos presentado perfil, Una herramienta de monitoreo y análisis de rendimiento para Linux. Le recomendamos encarecidamente que se familiarice con su documentación que se mantiene en https: // perf.wiki.núcleo.organizar.

Si encuentra aplicaciones que están consumiendo un alto porcentaje de recursos, puede considerar modificar el código fuente o usar otras alternativas.

Si tiene preguntas sobre este artículo o sugerencias para mejorar, todos somos oídos. No dude en comunicarse con nosotros usando el formulario de comentarios a continuación.

Convertirse en administrador del sistema certificado por Linux