Présentation
L'outil Linux perf est un utilitaire de ligne de commande léger pour le profilage et la surveillance des performances du processeur sur les systèmes Linux. Bien que l'outil soit simple, il fournit des informations détaillées qui aident à analyser les processeurs.
La commande contient de nombreuses sous-commandes pour la collecte, le traçage et l'analyse des données d'événements CPU.
Ce guide présente l'outil de performance à travers des exemples.
Prérequis
- Accès au terminal.
- Accès à root ou à un utilisateur avec des privilèges sudo.
- Un éditeur de texte, tel que nano ou Vi/Vim.
Comment installer les performances
Le programme perf n'est pas préinstallé sur les systèmes Linux. L'installation diffère selon la distribution Linux :
- Ubuntu/Debian
sudo apt install linux-tools-$(uname -r) linux-tools-generic
- RHEL/CentOS
sudo yum install perf
- Fédora
sudo dnf install perf
Vérifiez l'installation avec :
perf --version
La sortie imprime le numéro de version, indiquant que l'installation a réussi.
Autoriser les utilisateurs réguliers à utiliser les performances
Le perf
la commande, par défaut, nécessite sudo
privilèges. Pour permettre aux utilisateurs réguliers d'utiliser perf
, procédez comme suit :
1. Basculez vers l'utilisateur root :
sudo su -
2. Saisissez la commande suivante :
echo 0 > /proc/sys/kernel/perf_event_paranoid
La commande permet aux utilisateurs réguliers d'utiliser l'utilitaire perf dans la session en cours.
3. Revenez à l'utilisateur normal avec :
exit
Pour conserver les modifications, procédez comme suit :
1. Modifiez le sysctl fichier de configuration :
sudo nano /etc/sysctl.conf
2. Ajoutez les éléments suivants au fichier :
kernel.perf_event_paranoid = 0
3. Enregistrez les modifications et quittez nano.
Syntaxe de la commande Linux perf
Le perf
la syntaxe de la commande est :
perf <options> subcommand <options/arguments>
L'outil perf fonctionne comme git. Il agit comme une interface pour diverses sous-commandes et différentes activités. L'exécution de la commande sans options ni arguments affiche la liste des sous-commandes disponibles.
Sous-commandes Linux perf
Vous trouverez ci-dessous un tableau décrivant les perf
couramment utilisés sous-commandes :
Sous-commande | Description |
---|---|
annotate | Lit perf.data et affiche le code annoté. |
list | Répertorie tous les événements mesurables. |
stat | Recueille des statistiques de performances. |
record | Enregistre des échantillons dans perf.data . |
report | Lit perf.data et affiche le profil. |
script | Lit perf.data et affiche la sortie de trace. |
top | Outil de profilage. |
Les sous-commandes ont des options supplémentaires. Pour afficher les options des sous-commandes individuelles, exécutez :
perf <subcommand> -h
La sortie affiche une brève fenêtre d'aide pour la sous-commande spécifique.
Exemples de commandes Linux perf
Pour tester le perf
, nous utilisons la petite instance BMC s0.d1 de phoenixNAP exécutant Ubuntu 18.04.
Remarque : Pour d'autres cas d'utilisation de la petite instance BMC, consultez certains de nos guides :
- Configuration d'un pare-feu sur une instance BMC s0.d1.small
- Comment configurer un équilibreur de charge sur un serveur BMC s0.d1.small
- Configuration d'un environnement Sandbox sur une instance BMC S.0
Lors du profilage d'un processeur avec le perf
commande, le flux de travail typique consiste à utiliser :
1. perf list
pour trouver des événements.
2. perf stat
compter les événements.
3. perf record
pour écrire des événements dans un fichier.
4. perf report
pour parcourir le fichier enregistré.
5. perf script
pour vider les événements après traitement.
Les sorties diffèrent en fonction du système et des ressources disponibles localement.
1. Lister les événements disponibles
Répertorier tous les événements mesurables à l'aide de perf avec le list
sous-commande :
sudo perf list
La sortie répertorie tous les événements pris en charge, quel que soit leur type. Sans sudo
, la commande affiche une liste plus courte. Lorsque vous faites référence à des événements dans d'autres sous-commandes, utilisez le -e
balise suivie du nom de l'événement de la première colonne.
Ajoutez le paramètre filter après la commande pour limiter la liste par nom d'événement (première colonne) ou type d'événement (deuxième colonne). Par exemple, affichez uniquement les événements matériels avec :
sudo perf list hardware
Ou alternativement :
sudo perf list hw
La sortie affiche le résultat filtré en fonction du ou des paramètres fournis.
2. Afficher le profil système en temps réel du processeur
Pour afficher le profil CPU en temps réel, utilisez le top
sous-commande :
sudo perf top
La commande affiche des fonctions échantillonnées en temps réel, similaire à la commande Linux top. La sortie imprime les trois colonnes suivantes dans l'ordre de gauche à droite :
1. Utilisation du CPU liée à une fonction exprimée en pourcentages.
2. La bibliothèque ou le programme qui utilise la fonction.
3. Le symbole et le nom de la fonction, où [k]
est l'espace noyau et [.]
est l'espace utilisateur.
Par défaut, perf top
surveille tous les processeurs en ligne. Des options supplémentaires permettent :
- Surveillance de tous les processeurs (y compris inactifs) (
-a
). - Surveillance de processeurs spécifiques (
-C
). - Contrôle de la fréquence d'échantillonnage (
-F
).
Pour afficher des options supplémentaires en mode navigation, appuyez sur h .
Pour quitter le profileur et revenir au terminal, appuyez sur q .
3. Afficher les statistiques de performances du processeur avec perf
Pour afficher les statistiques de performances du processeur pour tous les événements matériels et logiciels standard à l'échelle du processeur, exécutez :
sudo perf stat -a sleep 5
La sortie affiche un rapport détaillé pour l'ensemble du système collecté en cinq secondes. Sans sleep 5
, le système mesure jusqu'à la fin avec CTRL +C .
4. Afficher les performances du processeur pour une commande
Pour vérifier les statistiques de performances du processeur pour une commande spécifique, exécutez :
sudo perf stat <command>
Par exemple, recherchez le ls
commande avec :
sudo perf stat ls
Le temps total d'une commande s'affiche sous forme de temps écoulé à la fin de la sortie.
5. Afficher les performances du processeur pour un processus
Associez les statistiques de performances du processeur à un processus en cours d'exécution spécifique en utilisant le -p
balise et en fournissant l'ID de processus (PID) :
sudo perf -p <PID> sleep 5
La sortie collecte et affiche des statistiques de performances pour le processus donné.
6. Compter les appels système d'événements par type
Pour compter les appels système du noyau Linux par type, exécutez :
sudo perf stat -e 'syscalls:sys_enter_*' -a sleep 5
Après cinq secondes, la sortie affiche tous les appels à l'échelle du système et leur nombre.
7. Enregistrer les cycles du processeur
Les cycles CPU sont un événement matériel. Pour enregistrer les cycles CPU, utilisez le record
sous-commande et fournissez le nom de l'événement avec le -e
balise :
sudo perf record -e cycles sleep 10
L'enregistrement enregistre les données dans un perf.data dossier. La sortie imprime la taille du fichier et le nombre d'échantillons de données qu'il contient.
8. Afficher les résultats des performances
Pour afficher les résultats de performance à partir de perf.data fichier, exécutez :
sudo perf report
La commande aide à lire les perf.data fichier, affichant tous les événements et statistiques collectés. Pour quitter la visionneuse, appuyez sur CTRL +C .
9. Modifier le format de sortie de l'échantillon
Pour afficher l'exemple de sortie au format de sortie standard, exécutez :
sudo perf report --stdio
Les modifications supplémentaires incluent l'affichage du numéro d'échantillon pour chaque événement (-n
), et afficher des colonnes spécifiques (--sort <column name>
). Par exemple :
sudo perf report -n --sort comm,symbol --stdio
La sortie ajoute une colonne pour le numéro d'échantillon et les informations de commande et de symbole.
10. Afficher la sortie de suivi
Utilisez le script
sous-commande pour lister tous les événements de perf.dat un. Par exemple :
sudo perf script
La sortie imprime les perf.data détails dans l'ordre du temps. Utilisez le script
sous-commande en tant que données de post-traitement.
11. Afficher l'en-tête de trace
Pour afficher tous les événements de perf.data avec des informations d'en-tête de trace supplémentaires, exécutez :
sudo perf script --header
La sortie affiche les informations d'en-tête du fichier, telles que le début de la trace, sa durée, les informations sur le processeur et la commande qui a récupéré les données. La liste des événements se trouve après les informations d'en-tête.
12. Vider les données brutes
Pour vider les données brutes au format hexadécimal à partir de perf.data fichier, utilisez le -D
choix :
sudo perf script -D
Le résultat est l'information brute de trace d'événement au format ASCII. L'option est utile pour le débogage d'événements.
13. Annoter les données
Pour annoter les données et désassembler davantage, utilisez le annotate
sous-commande :
sudo perf annotate --stdio -v
Le -v
L'option fournit une sortie détaillée. Le résultat montre le code source et le désassemblage des événements.
Conclusion
Après avoir parcouru les exemples de ce guide, vous connaissez les bases de l'utilisation du Linux perf
commande et certaines des principales sous-commandes. Utilisez la commande man pour afficher la documentation complète de l'outil d'analyse des performances et des sous-commandes.