Table of Contents
Perf-Una herramienta de análisis y supervisión del rendimiento para Linux
Cuando hablamos de rendimiento en informática, nos referimos a la relación entre nuestros recursos y las tareas que nos permiten realizar en un período de tiempo determinado.
Perf-Una herramienta de análisis y monitorización del rendimiento para Linux
En un día de competencia feroz entre empresas, es importante que aprendamos a utilizar lo que tenemos al máximo 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 permitirnos si queremos estar en la cima de nuestro juego.
Al mismo tiempo, debemos tener cuidado de no llevar nuestros recursos a un límite en el que el uso sostenido produzca daños irreparables.
En este artículo, le presentaremos una herramienta de análisis de rendimiento relativamente nueva y proporcione sugerencias que puede utilizar para supervisar sus sistemas Linux, incluido el hardware y las aplicaciones. Esto le ayudará a asegurarse de que funcionen para que pueda producir los resultados deseados sin desperdiciar recursos ni su propia energía.
Introducción e instalación de Perf en Linux
Entre otros, Linux proporciona una herramienta de análisis y supervisión del rendimiento llamada convenientemente perf. Entonces, ¿qué distingue a perf. de otras herramientas conocidas con las que ya está familiarizado?
freestar.config.enabled_slots.push (LocationName: “tecmint_incontent”, slotId: “tecmint_incontent”) ;
La respuesta es que perf. proporciona acceso a la Unidad de Monitoreo de Desempeño en la CPU, y por lo tanto nos permite observar de cerca el comportamiento del hardware y sus eventos asociados.
Además, también puede monitorear eventos de software y crear informes a partir de los datos que se recopilan.
Puede instalar perf. en distribuciones basadas en RPM con:
# yum update && yum install perf [ CentOS. RHEL. Fedora. # dnf update && dnf install perf [ Versiones de Fedora 23+.
En Debian. y derivados:
# sudo aptitude update && sudo aptitude install linux-tools-$ (uname-r) linux-tools-genérico
Si uname-r en el comando anterior devuelve ext ra strings además de la versión real ( 3.2.0-23-generic. en mi caso), es posible que deba escribir linux-tools-3.2.0-23. en lugar de usar la salida de uname.
También es importante tener en cuenta que perf. produce resultados incompletos cuando se ejecuta en un invitado en la parte superior de VirtualBox o VMWare, ya que no permita el acceso a contadores de hardware como lo hacen otras tecnologías de virtualización (como KVM o XEN).
Además, tenga en cuenta que algunos comandos perf. pueden estar restringidos a root 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 el modo paranoico. de forma permanente, actualice la siguiente configuración en el archivo /etc/sysctl.conf.
kernel.perf_event_paranoid = 0 Subcomandos
Una vez que haya instalado perf. puede consultar su página de manual para una lista de subcomandos disponibles (puede thi nk de subcomandos como opciones especiales que abren una ventana específica en el sistema). Para obtener resultados mejores y más completos, utilice perf. como root. o mediante sudo.
Perf list
perf list (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 la lista perf. seguida del nombre de la categoría ([ hw | sw | cache | tracepoint | pmu | event_glob. ]), como:
Muestra la lista de eventos predefinidos de software en Linux:
# perf list sw
Lista de eventos predefinidos de software en Linux Perf stat
perf. 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/zero of = test.iso bs = 10M count = 1
Recopila estadísticas de rendimiento del comando Linux
Las estadísticas que se muestran arriba indican, entre otras cosas :
- La ejecución del comando dd. tomó 21.812281. milisegundos de CPU. Si dividimos este número por el valor de “segundos transcurridos” a continuación ( 23.914596. milisegundos), se obtiene 0.912. (CPU utilizada).
- Mientras que el se ejecutó el comando, 15. cambios de contexto (también conocidos como cambios de proceso) indican que las CPU se cambiaron 15 veces de un proceso (o subproceso) a otro.
- 2. Las migraciones de 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 CPU que se consumieron fue de 62.025.623. que dividido por 0.021812281. segundos da 2.843. GHz.
- Si dividimos el número de ciclos por el recuento total de instrucciones, obtenemos 4.9. ciclos por instrucción, lo que significa que cada instrucción tomó casi 5 ciclos de CPU para completa (en promedio). Podemos culpar de esto (al menos en parte) a la cantidad de ramas y fallos de rama (ver más abajo), que terminan desperdiciando o haciendo un mal uso de los ciclos de la CPU.
- Cuando se ejecutó el comando, un total de
3,552,630. Esta es la representación a nivel de CPU de los puntos de decisión y los bucles en el código. Cuantas más ramas, menor rendimiento. Para compensar esto, todas las CPU modernas intentan predecir el flujo que tomará el código. 51,348. errores de rama indican que la función de predicción fue incorrecta 1.45%. del tiempo.
El mismo principio se aplica a la recopilación de estadísticas (o en otras palabras, creación de 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) ciérrela, y perf. mostrará las estadísticas en la pantalla. Al analizar esas estadísticas, puede identificar problemas potenciales.
Perf top
perf top. es similar al comando top, ya que muestra un perfil del sistema casi en tiempo real (también conocido como live análisis).
Con la opción-a mostrará todos los tipos de eventos conocidos, mientras que la opción-e le permitirá elegir una categoría de evento específica (como lo devuelve perf list. :
Mostrará todos los eventos de ciclos.
perf top-a
Mostrará todos los eventos relacionados con el reloj cpu.
perf top-e cpu-clock
Análisis en vivo del rendimiento de Linux
La primera columna del resultado anterior representa el porcentaje de muestras tomadas desde el comienzo de la ejecución, agrupadas por función Símbolo y objeto compartido. Hay más opciones disponibles en man perf-top.
Perf record
perf. record ejecuta un comando y guarda los datos estadísticos en un archivo llamado perf.data. dentro del directorio de trabajo actual. Se ejecuta de forma similar a perf stat.
Escriba perf record. seguido de un comando:
# perf record dd if =/dev/null of = test.iso bs = 10M count = 1
Registro del comando de datos estadísticos Informe de rendimiento
perf report. formatea los datos recopilados en perf.data. arriba en un informe de rendimiento:
# sudo perf report
Informe de rendimiento de Linux de rendimiento
Todos los subcomandos. anteriores tienen un página de manual dedicada que se puede invocar como:
# man perf-subcommand
donde subcomando. es list. stat. superior. registro. o informe. Estos son los subcomandos que se utilizan con más frecuencia; otros se enumeran en la documentación (consulte la sección Resumen para el enlace).
Resumen
En esta guía le presentamos perf. un herramienta de análisis y seguimiento del rendimiento para Linux. Le recomendamos encarecidamente que se familiarice con su documentación, que se mantiene en https://perf.wiki.kernel.org.
Si encuentra aplicaciones que consumen un alto porcentaje de recursos, puede considerar modificar el código fuente, o utilice otras alternativas.
Si tiene preguntas sobre este artículo o sugerencias para mejorar, somos todos oídos. No dude en comunicarse con nosotros utilizando el formulario de comentarios a continuación.