Perf- Un outil de surveillance et d'analyse des performances pour Linux

Perf- Un outil de surveillance et d'analyse des performances pour Linux

Lorsque nous parlons de performances dans l'informatique, nous nous référons à la relation entre nos ressources et les tâches qu'ils nous permet de accomplir dans une période donnée.

Perf- Un outil de surveillance et d'analyse des performances pour Linux

Dans une journée de concurrence sans féroce entre les entreprises, il est important que nous apprenions à utiliser ce que nous avons au meilleur de sa capacité. Le gaspillage de matériel ou de ressources logicielles, ou le manque de capacité à savoir comment les utiliser plus efficacement, finit par être une perte que nous ne pouvons tout simplement pas nous permettre si nous voulons être au sommet de notre jeu.

Dans le même temps, nous devons faire attention à ne pas porter nos ressources à une limite où une utilisation soutenue causera des dommages irréparables.

Dans cet article, nous vous présenterons un outil d'analyse des performances relativement nouveau et fournirons des conseils que vous pouvez utiliser pour surveiller vos systèmes Linux, y compris le matériel et les applications. Cela vous aidera à vous assurer qu'ils fonctionnent afin que vous soyez capable de produire les résultats souhaités sans gaspiller des ressources ou votre propre énergie.

Présentation et installation de perf dans Linux

Entre autres, Linux fournit un outil de surveillance et d'analyse des performances appelée commodément perf. Alors ce qui distingue perf D'autres outils bien connus avec lesquels vous connaissez déjà?

La réponse est que perf donne accès à l'unité de surveillance des performances dans le processeur et nous permet donc de regarder de près le comportement du matériel et de ses événements associés.

De plus, il peut également surveiller les événements logiciels et créer des rapports à partir des données collectées.

Vous pouvez installer perf Dans les distributions basées sur RPM avec:

# yum Update && yum install perf [Centos / / Rhel / / Feutre] # dnf update && dnf install perf [Fedora 23+ sorties] 

Dans Debian et dérivés:

# Sudo Aptitude Update && sudo aptitude install linux-tools - $ (uname -r) linux-tools-generic 

Si uname -r dans la commande ci-dessus renvoie des chaînes supplémentaires en plus de la version réelle (3.2.0-23 générique Dans mon cas), vous devrez peut-être taper Linux-Tools-3.2.0-23 au lieu d'utiliser la sortie de ton nom.

Il est également important de noter que perf donne des résultats incomplets lorsqu'il est exécuté dans un invité au-dessus de VirtualBox ou VMware car ils n'autorisent pas l'accès aux compteurs matériels comme d'autres technologies de virtualisation (comme KVM ou Xen).

De plus, gardez à l'esprit que certains perf Les commandes peuvent être limitées à root par défaut, qui peuvent être désactivées (jusqu'à ce que le système soit redémarré) en faisant:

# echo 0> / proc / sys / kernel / perf_event_paranoid 

Si vous avez besoin de désactiver paranoïaque mode de façon permanente, mettez à jour le paramètre suivant dans / etc / sysctl.confli déposer.

noyau.perf_event_paranoid = 0 

Sous-commande

Une fois que vous avez installé perf, Vous pouvez vous référer à sa page homme pour une liste des sous-communs disponibles (vous pouvez considérer les sous-communs comme des options spéciales qui ouvrent une fenêtre spécifique sur le système). Pour des résultats pour les meilleurs et plus complets, utilisez perf soit comme racine ou à travers Sudo.

Liste de perf

Perf List (sans options) renvoie tous les types d'événements symboliques (Long List). Si vous souhaitez afficher la liste des événements disponibles dans une catégorie spécifique, utilisez perf Liste suivie du nom de la catégorie ([HW | SW | CACHE | TracePoint | PMU | Event_GloB]), tel que:

Afficher la liste des événements prédéfinis logiciels dans Linux:

# list list sw 
Liste des événements prédéfinis du logiciel dans Linux

Perf state

perf STAT exécute une commande et collecte des statistiques de performances Linux pendant l'exécution d'une telle commande. Que se passe-t-il dans notre système lorsque nous exécutons dd?

# perf stat dd if = / dev / zéro de = test.ISO BS = 10m Count = 1 
Collecte les statistiques de performance de la commande Linux

Les statistiques présentées ci-dessus indiquent, entre autres:

  1. L'exécution du dd Commande prise 21.812281 millisecondes de processeur. Si nous divisons ce numéro par la valeur «Deuxième Temps écoulé» ci-dessous (23.914596 millisecondes), il donne 0.912 (CPU utilisé).
  2. Pendant que la commande a été exécutée, 15 Les commutateurs de contexte (également appelés commutateurs de processus) indiquent que les CPU ont été passés 15 fois d'un processus (ou d'un thread) à un autre.
  3. 2 Les migrations du processeur sont le résultat attendu lorsque dans un CPU à 2 cœurs, la charge de travail est répartie uniformément entre le nombre de cœurs.
    Pendant ce temps (21.812281 millisecondes), le nombre total de cycles CPU qui ont été consommés était 62 025 623, qui divisé par 0.021812281 secondes donne 2.843 Ghz.
  4. Si nous divisons le nombre de cycles par le nombre total d'instructions, nous obtenons 4.9 Cycles par instruction, ce qui signifie que chaque instruction a pris près de 5 cycles de CPU à terminer (en moyenne). Nous pouvons blâmer cela (au moins en partie) sur le nombre de branches et de branches (voir ci-dessous), qui finissent par gaspiller ou abuser des cycles CPU.
  5. Au fur et à mesure que la commande a été exécutée, un total de 3 552 630 Des branches ont été rencontrées. Ceci est la représentation au niveau du processeur des points de décision et des boucles dans le code. Plus il y a de branches, plus les performances sont basses. Pour compenser cela, tous les CPU modernes tentent de prédire le flux que le code prendra. 51 348 Les mises de branche indiquent que la fonction de prédiction était erronée 1.45% du temps.

Le même principe s'applique à la collecte de statistiques (ou en d'autres termes, le profilage) pendant qu'une application est en cours d'exécution. Lancez simplement l'application souhaitée et après une période raisonnable (ce qui dépend de vous), fermez-le, et perf affichera les statistiques à l'écran. En analysant ces statistiques, vous pouvez identifier les problèmes potentiels.

Haut perf

haut perf est similaire à la commande supérieure, en ce qu'il affiche un profil système presque en temps réel (également connu sous le nom d'analyse en direct).

Avec le -un Option Vous afficherez tous les types d'événements connus, tandis que le -e L'option vous permettra de choisir une catégorie d'événements spécifique (comme retourné par liste de perf):

Affichera tous les cycles l'événement.

perf top -a 

Affichera tous les événements liés à la blocage du processeur.

Perf Top -e CPU horloge 
Analyse en direct des performances Linux

La première colonne de la sortie ci-dessus représente le pourcentage d'échantillons prélevés depuis le début de l'exécution, regroupés par symbole de fonction et objet partagé. Plus d'options sont disponibles dans homme perf-top.

Enregistrement de perf

perf Enregistrement exécute une commande et enregistre les données statistiques dans un fichier nommé perf.données à l'intérieur du répertoire de travail actuel. Il fonctionne de manière similaire à perf state.

Taper enregistrement de perf suivi d'une commande:

# perf enregistrer dd if = / dev / null of = test.ISO BS = 10m Count = 1 
Enregistrer les données statistiques de commande

Rapport perf

rapport perf formats les données collectées dans perf.données ci-dessus dans un rapport de performance:

# Rapport de perfor sudo 
Rapport de performance perf Linux

Tout ce qui précède sous-commande Ayez une page d'homme dédiée qui peut être invoquée comme:

# homme perf-subcommand 

sous-commande est soit liste, stat, haut, enregistrer, ou rapport. Ce sont les sous-communs les plus fréquemment utilisées; D'autres sont répertoriés dans la documentation (reportez-vous à la section Résumé du lien).

Résumé

Dans ce guide, nous vous avons présenté perf, Un outil de surveillance et d'analyse des performances pour Linux. Nous vous encourageons fortement à vous familiariser avec sa documentation qui est maintenue dans https: // perf.wiki.noyau.org.

Si vous trouvez des applications qui consomment un pourcentage élevé de ressources, vous pouvez envisager de modifier le code source ou d'utiliser d'autres alternatives.

Si vous avez des questions sur cet article ou des suggestions à améliorer, nous sommes tous des oreilles. N'hésitez pas à nous joindre en utilisant le formulaire de commentaire ci-dessous.

Devenir un administrateur système certifié Linux