Autres options

perf record et perf report sont deux commandes qui jouent un rôle central quand on utilise perf pour analyser des grosses applications. Elles ont donc, sans surprise, beaucoup d’options.

Options de perf record

Dans le cas de perf record, nous avons déjà abordé de nombreuses options utiles, mais quelques autres options méritent encore d’être mentionnées :

  • Il existe un certain nombre d’options de performance qui permettent de diminuer le nombre d’échantillons perdus quand on est forcé de travailler à fréquence d’échantillonnage élevée, au prix d’une consommation de ressources supplémentaire par perf : ordonnancement temps réel (--realtime/-r), taille des tampons de transit pour les données mesurées (--mmap-pages/-m), E/S asynchrone multi-thread (--aio)…
  • On peut demander d’enregistrer divers détails pour chaque échantillon mesuré : addresses mémoire virtuelles et physiques, timestamps, numéro du CPU où l’échantillon a été mesuré, direction prise au niveau des instructions de branchement, contenu des registres CPU…

Filtrage non destructif

Au niveau de perf report, il est possible de filtrer les données affichées (par PID, TID, UID, cgroup, binaire/DSO, CPU…). La différence par rapport aux options de filtrage de perf record, c’est qu’ici les données ont bien été enregistrées dans le fichier perf.data, mais on choisit juste de ne pas les afficher pour cette session perf report.

Sélection temporelle

perf report fournit également quelques options de filtrage et d’aggrégation temporelle, qui sont très utiles quand on étudie une application qui alterne entre plusieurs comportements dans le temps (typiquement des phases calcul vs ES ou initialisation vs traitement vs finalisation) :

  • Avec --time, on peut n’afficher que les données qui concernent une certaine fenêtre de temps dans les données issues du fichier perf.data. La fenêtre peut être donnée en pourcentage (ex : --time 15%-90%) ou en secondes (ex : --time 0.5,13.3). Et il est possible de fusionner des données issues de plusieurs fenêtres de temps.
  • Avec --sort time, qui se combine avec les autre options --sort abordées précédemment, on peut comparer l’activité de l’application au sein de “tranches de temps” de taille fixe contrôlées par l’option --time-quantum. Cela est notamment utile pour repérer les changements qualitatifs de comportement de l’application et en déduire les bonnes valeurs à passer à --time pour étudier ces comportements différents un par un.

Sortie non interactive

Une dernière option de visualisation utile de perf report est --stdio, qui produit une version non interactive de la table qui peut facilement être redirigée vers un fichier texte pour partage avec autrui ou post-traitement par un script. Mais pour cette dernière tâche, il y a un outil perf plus adapté que nous aborderons ultérieurement.