Lorsque nous parlons de performance en informatique, nous faisons référence à la relation entre nos ressources et les tâches qu’elles nous permettent d’accomplir dans une période donnée.

Dans une journée de concurrence acharnée entre les entreprises, il est important que nous apprenions à utiliser au mieux ce que nous avons à notre disposition. Le gaspillage des ressources matérielles ou logicielles, ou le manque de capacité à savoir comment les utiliser de manière plus efficace, finit par être une perte que nous ne pouvons tout simplement pas nous permettre si nous voulons être au sommet de notre jeu.
En même temps, nous devons veiller à ne pas pousser nos ressources à une limite où une utilisation soutenue entraînera des dommages irréparables.
Dans cet article, nous vous présenterons un outil d’analyse de performance relativement nouveau et vous 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 de manière à ce que vous soyez capable de produire les résultats souhaités sans gaspiller de ressources ou votre propre énergie.
Présentation et installation de Perf sous Linux
Entre autres, Linux propose un outil de surveillance et d’analyse des performances appelé de manière pratique perf. Alors, qu’est-ce qui distingue perf des autres outils bien connus avec lesquels vous êtes déjà familier?
La réponse est que perf donne accès à l’Unité de Surveillance des Performances dans le CPU, et nous permet ainsi d’avoir un regard attentif sur le comportement du matériel et ses événements associés.
En outre, il peut 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 / Fedora] # dnf update && dnf install perf [Fedora 23+ releases]
Dans Debian et ses dérivés :
# sudo aptitude update && sudo aptitude install linux-tools-$(uname -r) linux-tools-generic
Si la commande uname -r
ci-dessus renvoie des chaînes supplémentaires en plus de la version réelle (3.2.0-23-generic dans mon cas), vous devrez peut-être taper linux-tools-3.2.0-23 au lieu d’utiliser la sortie de uname.
Il est également important de noter que perf donne des résultats incomplets lorsqu’il est exécuté dans une machine virtuelle sur VirtualBox ou VMWare car ils n’autorisent pas l’accès aux compteurs matériels comme le font d’autres technologies de virtualisation (telles que KVM ou XEN).
De plus, gardez à l’esprit que certaines commandes perf peuvent être restreintes à root par défaut, ce qui peut être désactivé (jusqu’au redémarrage du système) en faisant :
# echo 0 > /proc/sys/kernel/perf_event_paranoid
Si vous avez besoin de désactiver le mode paranoïaque de manière permanente, mettez à jour le paramètre suivant dans le fichier /etc/sysctl.conf.
kernel.perf_event_paranoid = 0
Sous-commandes
Une fois que vous avez installé perf, vous pouvez consulter sa page de manuel pour obtenir une liste des sous-commandes disponibles (vous pouvez considérer les sous-commandes comme des options spéciales qui ouvrent une fenêtre spécifique dans le système). Pour des résultats optimaux et plus complets, utilisez perf soit en tant que root, soit via sudo.
Liste de perf
perf list (sans options) renvoie tous les types d’événements symboliques (longue liste). Si vous souhaitez afficher la liste des événements disponibles dans une catégorie spécifique, utilisez perf list suivi du nom de la catégorie ([hw|sw|cache|tracepoint|pmu|event_glob]), comme ceci :
Afficher la liste des événements prédéfinis logiciels dans Linux :
# perf list sw

Statistiques de perf
perf stat exécute une commande et collecte des statistiques de performance Linux pendant l’exécution de ladite commande. Que se passe-t-il dans notre système lorsque nous exécutons dd?
# perf stat dd if=/dev/zero of=test.iso bs=10M count=1

Les statistiques ci-dessus indiquent, entre autres choses :
- L’exécution de la commande dd a pris 21,812281 millisecondes de CPU. Si nous divisons ce nombre par la valeur « temps écoulé en secondes » ci-dessous (23,914596 millisecondes), cela donne 0,912 (CPU utilisé).
- Pendant que la commande était exécutée, 15 changements de contexte (également appelés commutations de processus) indiquent que les processeurs ont été basculés 15 fois d’un processus (ou thread) à un autre.
- 2 migrations de CPU est le résultat attendu lorsqu’un CPU à 2 cœurs répartit uniformément la charge de travail entre le nombre de cœurs.
Pendant ce temps (21,812281 millisecondes), le nombre total de cycles CPU consommés était de 62 025 623, ce qui divisé par 0,021812281 secondes donne 2,843 GHz. - 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 presque 5 cycles CPU pour être complétée (en moyenne). Nous pouvons attribuer cela (au moins en partie) au nombre de branches et de ratés de branches (voir ci-dessous), qui finissent par gaspiller ou mal utiliser les cycles CPU.
- Alors que la commande était exécutée, un total de 3 552 630 branches ont été rencontrées. Il s’agit de la représentation au niveau du CPU des points de décision et des boucles dans le code. Plus il y a de branches, plus les performances sont faibles. Pour compenser cela, tous les CPU modernes tentent de prédire le flux que le code va prendre. 51 348 ratés de branches indiquent que la fonction de prédiction était incorrecte 1,45% du temps.
Le même principe s’applique à la collecte de statistiques (ou en d’autres termes, au profilage) pendant l’exécution d’une application. Lancez simplement l’application désirée et après une période de temps raisonnable (qui dépend de vous), fermez-la, et perf affichera les statistiques à l’écran. En analysant ces statistiques, vous pouvez identifier les problèmes potentiels.
Perf top
perf top est similaire à la commande top, car elle affiche un profil système presque en temps réel (également connu sous le nom d’analyse en direct).
Avec l’option -a
, vous afficherez tous les types d’événements connus, tandis que l’option -e
vous permettra de choisir une catégorie d’événements spécifique (comme retourné par perf list):
Affichera tous les événements de cycles.
perf top -a
Affichera tous les événements liés à l’horloge CPU.
perf top -e cpu-clock

La première colonne dans la sortie ci-dessus représente le pourcentage d’échantillons pris depuis le début de l’exécution, regroupés par symbole de fonction et objet partagé. Plus d’options sont disponibles dans man perf-top.
Perf record
perf record exécute une commande et enregistre les données statistiques dans un fichier nommé perf.data à l’intérieur du répertoire de travail actuel. Il s’exécute de manière similaire à perf stat.
Tapez perf record suivi d’une commande:
# perf record dd if=/dev/null of=test.iso bs=10M count=1

Perf report
perf report formate les données collectées dans perf.data ci-dessus en un rapport de performance:
# sudo perf report

Toutes les sous-commandes ci-dessus ont une page de manuel dédiée qui peut être invoquée comme suit:
# man perf-subcommand
où sous-commande est soit liste, stat, top, record, ou rapport. Ce sont les sous-commandes les plus fréquemment utilisées; les autres sont répertoriées dans la documentation (reportez-vous à la section Résumé pour le 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 vivement à vous familiariser avec sa documentation qui est maintenue à l’adresse https://perf.wiki.kernel.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 pour l’améliorer, nous sommes tout ouïe. N’hésitez pas à nous contacter en utilisant le formulaire de commentaire ci-dessous.
Source:
https://www.tecmint.com/perf-performance-monitoring-and-analysis-tool-for-linux/