Analizar y optimizar los servidores de Linux
Obtener Perfspect | Running Perfspect | Edificio Perfspect
Esta herramienta de línea de comandos está diseñada para ayudarlo a analizar y optimizar los servidores de Linux y el software que se ejecuta en ellos. Ya sea que sea un administrador del sistema, un desarrollador o un ingeniero de rendimiento, esta herramienta proporciona información integral y recomendaciones procesables para mejorar el rendimiento y la eficiencia.
$ wget -qO- https://github.com/intel/PerfSpect/releases/latest/download/perfspect.tgz | tar xvz
$ cd perfspect
Perfspect incluye un conjunto de comandos diseñados para analizar y optimizar tanto el rendimiento del sistema como el software.
Ejecute perfspect -h para obtener ayuda de nivel superior. Tenga en cuenta los comandos y opciones disponibles.
Perfspect ha sufrido un rediseño para la versión 3.x. Las versiones anteriores de Perfspect requirieron dos etapas:
El diseño 3.x combina estos dos pasos en uno ... produciendo métricas fáciles de usar. Ejecute perfspect metrics para la nueva experiencia.
También están disponibles con 3.x "Métricas en vivo" donde las métricas se imprimen a Stdout a medida que se recopilan. Prueba perfspect metrics --live .
La funcionalidad SVR-Info ahora está incluida en Perfspect. El informe de configuración de SVR-Info se genera ejecutando perfspect report . Los puntos de referencia se pueden ejecutar ejecutando perfspect report --benchmark all . Ejecute perfspect flame para generar un software FlameGraph. Y, ejecute perfspect telemetry para recolectar telemetría del sistema.
| Dominio | Descripción |
|---|---|
perfspect config | Modificar la configuración del sistema |
perfspect flame | Generar flamages |
perfspect lock | Recopilar información de hotspot, C2C e bloqueo de bloqueo del sistema |
perfspect metrics | Monitorear las métricas de núcleo y no correos |
perfspect report | Generar el informe de configuración |
perfspect telemetry | Recolectar telemetría del sistema |
Cada comando tiene un texto de ayuda adicional que se puede ver ejecutando perfspect <command> -h .
El comando config proporciona un método para ver y cambiar varios parámetros de configuración del sistema. Ejecute perfspect config -h para ver los parámetros que se pueden modificar. Use precaución al cambiar los parámetros del sistema. Es posible configurar el sistema de una manera que ya no opere. En algunos casos, se requerirá un reinicio para volver a la configuración predeterminada.
Ejemplo:
$ ./perfspect config --cores 24 --llc 2.0 --uncoremaxfreq 1.8
...
Los flamas de software son útiles para diagnosticar cuellos de botella de rendimiento del software. Ejecute perfspect flame para capturar un software FlameGraph de todo el sistema.
Como los sistemas contienen más y más núcleos, puede ser útil analizar la sobrecarga de bloqueo del núcleo y el posible intercambio falso que impacta la escalabilidad del sistema. Ejecute perfspect lock para recopilar el punto de acceso del sistema, C2C y la información de contención de bloqueo. Los ingenieros de rendimiento experimentados pueden analizar la información recopilada para identificar cuellos de botella.
El comando metrics proporciona métricas de caracterización del rendimiento del sistema. Las métricas proporcionadas dependen de la arquitectura de la plataforma.
Ejemplo:
$ ./perfspect metrics --duration 30
emr ⣯ collection complete
Metric files:
/home/jharper5/dev/pt/perfspect_2024-10-10_10-58-36/emr_metrics.csv
/home/jharper5/dev/pt/perfspect_2024-10-10_10-58-36/emr_metrics_summary.csv
/home/jharper5/dev/pt/perfspect_2024-10-10_10-58-36/emr_metrics_summary.html
El comando metrics admite dos modos: predeterminado y "en vivo". El modo predeterminado se comporta como arriba: las métricas se recopilan y se guardan en archivos para su revisión. El modo "en vivo" imprime las métricas en un formato seleccionado, por ejemplo, CSV, JSON, para que se puedan ver en la consola y/o redirigido en un archivo o tubería de observabilidad.
Si sudo no es posible y en ejecución ya que el usuario raíz no es posible, use el indicador --noroot en la línea de comandos, por ejemplo, perfspect metrics --noroot , y solicite a un administrador realizar los siguientes cambios en el sistema de destino:
for i in $(find /sys/devices -name perf_event_mux_interval_ms); do echo 125 > $i; done Consulte perfspect metrics -h para el extenso conjunto de opciones y ejemplos.
El comando report genera informes de configuración del sistema en una variedad de formatos. Por defecto, se recopilan todas las categorías de información:
$ ./perfspect report
soc-PF4W5A3V ⢿ collection complete
Report files:
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-45-40/soc-PF4W5A3V.html
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-45-40/soc-PF4W5A3V.xlsx
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-45-40/soc-PF4W5A3V.json
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-45-40/soc-PF4W5A3V.txt
Es posible recopilar un subconjunto de información proporcionando opciones de línea de comandos. Tenga en cuenta que al especificar solo el formato txt , se imprime a STDOUT, así como se escribe en un archivo de informe.
$ ./perfspect report --bios --os --format txt
BIOS
====
Vendor: Intel Corporation
Version: EGSDCRB1.SYS.1752.P05.2401050248
Release Date: 01/05/2024
Operating System
================
OS: Ubuntu 23.10
Kernel: 6.5.0-44-generic
Boot Parameters: BOOT_IMAGE=/boot/vmlinuz-6.5.0-44-generic root=UUID=e6d667af-f0b7-450b-b409-9fe2647aeb38 ro
Microcode: 0x21000230
Report files:
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-47-55/emr.txt
Consulte perfspect report -h para todas las opciones.
Los puntos de referencia de memoria ejecutados a través del comando de informe PERFSPECT requieren la aplicación de verificador de latencia de memoria Intel®. Se puede descargar desde aquí: MLC. Una vez descargado, extraiga el ejecutable de Linux y colóquelo en el directorio Perfspect/Tools/X86_64.
El comando telemetry ejecuta coleccionistas de telemetría en los objetivos especificados y luego genera informes de los resultados. Por defecto, se recopilan todos los tipos de telemetría. Para seleccionar tipos de telemetría, hay opciones de línea de comandos adicionales disponibles (consulte perfspect telemetry -h ).
$ ./perfspect telemetry --duration 30
soc-PF4W5A3V ⣾ collection complete
Report files:
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-55-13/soc-PF4W5A3V_telem.html
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-55-13/soc-PF4W5A3V_telem.xlsx
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-55-13/soc-PF4W5A3V_telem.json
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-55-13/soc-PF4W5A3V_telem.txt
Por defecto, Perfspect se dirige al anfitrión local, es decir, el host donde se está ejecutando Perfspect. Los sistemas remotos también se pueden revisar cuando los sistemas remotos pueden accesibles a través de SSH desde el host local.
IMPORTANTE: Asegúrese de que el usuario remoto tenga acceso de sudo sin contraseña (o privilegios raíz) para utilizar completamente las capacidades de Perfspect.
Para apuntar a un solo sistema remoto utilizando una clave privada preconfigurada:
$ ./perfspect report --target 192.168.1.42 --user fred --key ~/.ssh/fredkey
...
Para apuntar a un solo sistema remoto utilizando una contraseña:
$ ./perfspect report --target 192.168.1.42 --user fred
[email protected]'s password: ******
...
Para apuntar a más de un sistema remoto, se utiliza un archivo YAML para proporcionar los parámetros de conexión necesarios, por ejemplo:
$ cat targets.yaml
# This YAML file contains a list of remote targets with their corresponding properties.
# Each target has the following properties:
# name: The name of the target (optional)
# host: The IP address or host name of the target (required)
# port: The port number used to connect to the target via SSH (optional)
# user: The user name used to connect to the target via SSH (optional)
# key: The path to the private key file used to connect to the target via SSH (optional)
# pwd: The password used to connect to the target via SSH (optional)
#
# Note: If key and pwd are both provided, the key will be used for authentication.
#
# Security Notes:
# It is recommended to use a private key for authentication instead of a password.
# Keep this file in a secure location and do not expose it to unauthorized users.
#
# Below are examples. Modify them to match your environment.
targets:
- name: ELAINES_TARGET
host: 192.168.1.1
port:
user: elaine
key: /home/elaine/.ssh/id_rsa
pwd:
- name: JERRYS_TARGET
host: 192.168.1.2
port: 2222
user: jerry
key:
pwd: george
$ ./perfspect report --benchmark speed,memory --targets targets.yaml
...
builder/build.sh crea las dependencias y la aplicación en contenedores Docker que proporcionan los entornos de compilación requeridos. Asume que tiene Docker instalado en su sistema de desarrollo.
make construir la aplicación. Asume que las dependencias se han construido anteriormente y que usted ha instalado en su sistema de desarrollo.