GNU/Linux >> Tutoriels Linux >  >> Linux

Linux perf :comment utiliser la commande et le profileur

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.


Linux
  1. Comment utiliser la commande Linux grep

  2. Comment utiliser la commande history sous Linux

  3. Comment créer un alias et utiliser la commande Alias ​​sous Linux

  4. Comment utiliser la commande id sous Linux

  5. Comment utiliser la commande "screen" sous Linux

Comment utiliser la commande fd sur le système Linux

Comment utiliser la commande wget sous Linux ?

Comment utiliser la commande xargs sous Linux ?

Comment installer et utiliser la commande Ack sous Linux

Comment utiliser la commande RPM sous Linux

Comment utiliser la commande which sous Linux