Introduction
perf
(également appelé perf_events
) est un ensemble d’outils pour analyser
la performance des systèmes Linux. Ces outils s’appuient sur une infrastructure
présente dans le noyau Linux depuis sa version 2.6.31 (2009), avec laquelle ils
entretiennent une relation très étroite, les outils perf
étant maintenus au
sein du code source du noyau Linux. Une analyse à grain fin de l’activité CPU
est également possible via des compteurs de performance (Performance
Monitoring Unit ou PMU), définis par chaque microarchitecture CPU.
En seulement une dizaine d’années d’existence, perf
est devenu une référence
dans plusieurs domaines, incluant notamment l’étude à grain fin de l’activité
CPU et l’instrumentation dynamique de code noyau et applicatif. Dans ce TP, nous
allons explorer les différentes possibilités offertes par perf
en 2024, en
l’utilisant pour analyser l’exécution de programmes simples mais néanmoins
représentatifs des différentes formes d’activité logicielle qu’il sait
décortiquer.
Le TP est pensé pour être suivi dans l’ordre, chaque section pouvant ainsi se référer aux informations présentées dans la section précédente. Il se décompose en trois grandes parties :
- Dans une première partie, nous étudierons les fonctionnalités élémentaires que
tout utilisateur de
perf
devrait connaître, du simple comptage d’événements (perf stat
) au profilage de code (perf report
) en passant par le suivi d’activité noyau (perf trace
). - Dans une seconde partie, nous aborderons des fonctionnalités plus avancées,
allant du profilage en temps réel du système entier (
perf top
) à l’analyse détaillée des accès mémoire (perf mem
,perf c2c
) en passant par l’instrumentation de code arbitraire (perf probe
). - Enfin, des annexes abordent plusieurs thématiques qui ne sont pas couvertes en TP pour diverses raisons (manque de temps, intérêt plus faible, nécessitent des privilèges trop importants…), mais sont utiles à connaître dans la pratique quotidienne de l’outil.
Le TP est pensé pour être suivi sur srv-calcul-ambulant
, nous supposerons donc
que vous avez déjà un compte sur cette plate-forme et savez vous en servir. En
cas de besoin, une copie de la documentation du serveur est disponible en local
à l’URL http://srv-calcul-ambulant/ 🇬🇧, et cette documentation est également
publiée sur Internet 🇬🇧.
Si vous souhaitez adapter le TP à une autre plate-forme, son code source est
disponible sur https://gitlab.in2p3.fr/grasland/tp-perf sous licence
CC-BY-SA 4.0. Le rendu
Markdown est assuré par mdBook et les
petits programmes utilisés pour les TPs sont stockés dans le répertoire code/
.