Analyser et optimiser les serveurs Linux
Obtenir un perfucteur | Running perforSpect | Construction de performes
Cet outil de ligne de commande est conçu pour vous aider à analyser et à optimiser les serveurs Linux et le logiciel qui les exécute. Que vous soyez un administrateur système, un développeur ou un ingénieur en performance, cet outil fournit des informations complètes et des recommandations exploitables pour améliorer les performances et l'efficacité.
$ wget -qO- https://github.com/intel/PerfSpect/releases/latest/download/perfspect.tgz | tar xvz
$ cd perfspect
PerfSpect comprend une suite de commandes conçues pour analyser et optimiser les performances du système et du logiciel.
Exécutez perfspect -h pour une aide de haut niveau. Remarquez les commandes et options disponibles.
PerfSpect a subi un redéignage pour la version 3.x. Les versions antérieures de PerfSpect ont nécessité deux étapes:
La conception 3.x combine ces deux étapes en une ... produisant des mesures conviviales. Exécutez perfspect metrics pour la nouvelle expérience.
Les «métriques en direct» sont également disponibles avec les «métriques en direct» où les métriques sont imprimées à STDOUT lorsqu'ils sont collectés. Essayez perfspect metrics --live .
La fonctionnalité SVR-INFO est désormais incluse dans PerfSpect. Le rapport de configuration SVR-INFO est généré par perfspect report . Les repères peuvent être exécutés en exécutant perfspect report --benchmark all . Exécutez perfspect flame pour générer un logiciel FlameGraph. Et, exécutez perfspect telemetry pour collecter la télémétrie système.
| Commande | Description |
|---|---|
perfspect config | Modifier la configuration du système |
perfspect flame | Générer des flammes |
perfspect lock | Collectez les informations sur les hotspot larges du système, le C2C et le verrouillage |
perfspect metrics | Surveiller les mesures noyau et non corigées |
perfspect report | Générer un rapport de configuration |
perfspect telemetry | Collectez la télémétrie système |
Chaque commande a un texte d'aide supplémentaire qui peut être visualisé en exécutant perfspect <command> -h .
La commande config fournit une méthode pour afficher et modifier divers paramètres de configuration du système. Exécutez perfspect config -h pour afficher les paramètres qui peuvent être modifiés. Utilisez la prudence lors de la modification des paramètres du système. Il est possible de configurer le système de manière à ne plus fonctionner. Dans certains cas, un redémarrage devra revenir aux paramètres par défaut.
Exemple:
$ ./perfspect config --cores 24 --llc 2.0 --uncoremaxfreq 1.8
...
Le logiciel FlameGraphs est utile pour diagnostiquer les goulots d'étranglement des performances du logiciel. Exécutez perfspect flame pour capturer un logiciel à l'échelle du système FlameGraph.
Comme les systèmes contiennent de plus en plus de cœurs, il peut être utile d'analyser les frais généraux de verrouillage du noyau et les faux partagions potentielles qui ont un impact sur l'évolutivité du système. Exécutez perfspect lock pour collecter les informations sur les hotspot larges du système, le C2C et le verrouillage. Les ingénieurs de performance expérimentés peuvent analyser les informations collectées pour identifier les goulots d'étranglement.
La commande metrics fournit des mesures de caractérisation des performances du système. Les mesures fournies dépendent de l'architecture de la plate-forme.
Exemple:
$ ./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
La commande metrics prend en charge deux modes - par défaut et "live". Le mode par défaut se comporte comme ci-dessus - les métriques sont collectées et enregistrées dans des fichiers pour examen. Le mode "Live" imprime les mesures dans un format sélectionné, par exemple, CSV, JSON, vers STDOUT où ils peuvent être consultés dans la console et / ou redirigées en un fichier ou un pipeline d'observabilité.
Si Sudo n'est pas possible et en cours d'exécution car l'utilisateur racine n'est pas possible, utilisez l'indicateur --noroot sur la ligne de commande, par exemple, perfspect metrics --noroot et demandez à un administrateur d'apporter les modifications suivantes au système cible:
for i in $(find /sys/devices -name perf_event_mux_interval_ms); do echo 125 > $i; done Voir perfspect metrics -h pour l'ensemble étendu d'options et d'exemples.
La commande report génère des rapports de configuration système dans une variété de formats. Par défaut, toutes les catégories d'informations sont collectées:
$ ./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
Il est possible de collecter un sous-ensemble d'informations en fournissant des options de ligne de commande. Notez qu'en spécifiant uniquement le format txt , il est imprimé sur stdout, ainsi que écrit dans un fichier de rapport.
$ ./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
Voir perfspect report -h pour toutes les options.
Benchmarks de mémoire exécutés via la commande PerfSpect Report nécessite l'application Intel® Memory Latency Checker. Il peut être téléchargé à partir d'ici: MLC. Une fois téléchargé, extraire l'exécutable Linux et le placer dans le répertoire PerfSpect / Tools / x86_64.
La commande telemetry exécute des collectionneurs de télémétrie sur la ou les cibles spécifiées, puis génère des rapports des résultats. Par défaut, tous les types de télémétrie sont collectés. Pour sélectionner les types de télémétrie, des options de ligne de commande supplémentaires sont disponibles (voir 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
Par défaut, PerfSpect cible l'hôte local, c'est-à-dire l'hôte où PerfSpect est en cours d'exécution. Les systèmes distants peuvent également être ciblés lorsque les systèmes distants sont accessibles via SSH à partir de l'hôte local.
IMPORTANT: Assurez-vous que l'utilisateur distant a un accès sudo sans mot de passe (ou des privilèges racine) pour utiliser pleinement les capacités de PerfSpect.
Pour cibler un système distant unique à l'aide d'une clé privée préconfigurée:
$ ./perfspect report --target 192.168.1.42 --user fred --key ~/.ssh/fredkey
...
Pour cibler un seul système distant à l'aide d'un mot de passe:
$ ./perfspect report --target 192.168.1.42 --user fred
[email protected]'s password: ******
...
Pour cibler plus d'un système distant, un fichier YAML est utilisé pour fournir les paramètres de connexion nécessaires, par exemple:
$ 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 construit les dépendances et l'application dans des conteneurs Docker qui fournissent les environnements de construction requis. Supposons que Docker soit installé sur votre système de développement.
make des builds l'application. Supposons que les dépendances ont été construites précédemment et que vous êtes installé sur votre système de développement.