perf top
Premier contact
Dans la partie sur perf report
, nous avons vu que
perf
permet d’étudier comment l’utilisation d’une ressources système, par
exemple sa consommation de temps CPU, se répartit entre les fonctions d’un
programme et des bibliothèques qu’il utilise.
perf top
étend ce suivi à l’ensemble des programmes en cours d’exécution sur
le système, fournissant en cela une alternative plus détaillée aux moniteurs
systèmes traditionnels :
srun --pty perf top
Sur cette capture d’écran, vous voyez la répartition du temps CPU entre les
différentes fonctions des applications en cours d’exécution (indicateur [.]
)
ou du noyau Linux (indicateur [k]
). Au moment où cette capture d’écran a été
prise, il n’y avait pas d’autre tâche que perf top
en cours d’exécution, par
conséquent nous voyons surtout la consommation CPU de perf
et l’activité noyau
associée.
Même si l’analogie avec les outils de monitoring système aide à se faire une
première idée, il y a quand même une nuance importante à retenir : contrairement
aux outils classiques, perf top
affiche par défaut un rapport sur l’ensemble
des événements survenus depuis son lancement. Donc si par exemple une tâche
qui ne consommait rien se met brusquement à consommer du CPU alors que
perf top
surveille le CPU depuis longtemps, la sortie de perf top
ne va
changer que progressivement, puisqu’au début cette nouvelle activité ne
représentera qu’une part négligeable du temps CPU utilisé depuis le lancement de
perf top
. En retour, l’intérêt de cette approche est que sur un système
“stationnaire”, la précision des statistiques s’améliorera au fil du temps.
Pour obtenir un comportement plus analogue à celui d’un moniteur système
classique, où l’on n’affiche que l’activité système survenue depuis le dernier
rafraîchissement de l’affichage, il faut utiliser l’option --zero
, qui
s’abbrévie en -z
et que l’on peut aussi activer avec le raccourci clavier Z
quand perf top
est déjà en cours d’exécution.
Dans une telle utilisation, on aura souvent intérêt à ajuster aussi le paramètre
--delay
, abbrévié en -d
, qui contrôle la fréquence de rafraîchissement de
l’affichage.
Précautions d’emploi
En s’exécutant, perf top
va faire l’équivalent d’un perf record -a
et d’un
perf report
à intervalles de temps régulier. Par conséquent…
- Pour des résultats optimaux,
perf top
doit disposer des symboles déboguages de l’ensemble des programmes et bibliothèques en cours d’utilisation. Selon la distribution Linux que vous utilisez, cela peut nécessiter une préparation système assez conséquente et laborieuse. Sursrv-calcul-ambulant
, cette préparation a été effectuée pour l’ensemble des applications et bibliothèques du système disposant de symboles de déboguage. - La durée de traitement du rapport “
perf report
” doit être inférieure au temps entre deux rafraîchissements, sinon des cycles de rafraîchissement seront ratés. Et comme ce traitement s’exécute en parallèle des applications étudiées, il peut affecter leurs performances d’une façon qui biaisera la mesure. Il faut donc se restreindre à des mesures relativement économes en ressources CPU, et en particulier être très prudent avec l’option--call-graph=dwarf
.
En dehors de ces points de vigilance, l’utilisation de perf top
est très
proche de celle de perf record
et perf report
. La quasi-totalité des
options de perf top
sont communes avec l’une ou l’autre de ces commandes, et
je vous invite donc à
vous référer
aux sections associées pour plus d’informations.