Modificateurs
Il est possible d’appliquer un certain nombre de contraintes à la façon dont
perf
enregistre des événements, par le biais de suffixes placés à la fin du
nom de l’événement, après un signe :
(par exemple L1-dcache-load-misses:u
).
- Le suffixe
k
permet de ne compter que les événements survenus pendant l’exécution du code du noyau Linux, et de façon symétrique le suffixeu
permet de ne compter que les événements survenus hors du noyau (en user-space). - Le suffixe
p
peut être spécifié une ou plusieurs fois, pour indiquer avec quelle précision on souhaite que les événements soient localisés dans le code source du programme. Ceci concerne les mesures à base de PMU, pour lesquels une localisation parfaite des événements dans le code source peut être onéreuse voire impossible au niveau matériel à cause du parallélisme d’instructions.- Si ce suffixe n’est pas précisé, les événements peuvent être détectés à
une distance arbitraire et variable du point où le programme se trouvait
réellement quand ils se sont produit. L’interprétation de l’assembleur
annoté (
perf annotate
) et du profil de fonctions courtes doit dans ce cas être effectuée avec de grandes précautions ! - Si il est précisé une fois (comme dans
L1-dcache-load-misses:p
), les événements peuvent être détectés à distance du point du code source dont ils sont originaires, mais avec un décalage en instructions constant. Il suffit donc de trouver quel est ce décalage pour interpréter correctement l’assembleur annoté. - Si il est précisé deux fois (comme dans
L1-dcache-load-misses:pp
),perf
demande en plus au CPU de viser un décalage en instructions nul. La demande sera ignorée si le CPU ne peut pas la satisfaire. - Si il est précisé trois fois (comme dans
L1-dcache-load-misses:ppp
), le CPU émulera un décalage en instructions nul si nécessaire en randomisant la position détectée du pointeur d’instruction. Attention, ce mode nécessite davantage de travail que le mode:pp
du côtéperf
(il faut donc revoir les fréquences d’échantillonage à la baisse), et il n’est pas disponible pour tous les compteurs ni tous les fabricants de CPUs.
- Si ce suffixe n’est pas précisé, les événements peuvent être détectés à
une distance arbitraire et variable du point où le programme se trouvait
réellement quand ils se sont produit. L’interprétation de l’assembleur
annoté (
- Le suffixe
P
représente vers la forme la plus précise du suffixep
disponible sur le CPU hôte.