Chapitre 27. Ajouter et supprimer des tracepoints d'un collecteur de perf en cours d'exécution sans arrêter ou redémarrer perf
En utilisant l'interface du tuyau de contrôle pour activer et désactiver différents points de traçage dans un collecteur perf
en cours d'exécution, vous pouvez ajuster dynamiquement les données que vous collectez sans avoir à arrêter ou à redémarrer perf
. Vous êtes ainsi assuré de ne pas perdre les données de performance qui auraient été enregistrées pendant le processus d'arrêt ou de redémarrage.
27.1. Ajouter des tracepoints à un collecteur perf en cours d'exécution sans arrêter ou redémarrer perf
Ajoutez des tracepoints à un collecteur perf
en cours d'exécution à l'aide de l'interface du tuyau de contrôle pour ajuster les données que vous enregistrez sans avoir à arrêter perf
et à perdre des données de performance.
Conditions préalables
-
L'outil de l'espace utilisateur
perf
est installé comme décrit dans la section Installation de perf.
Procédure
Configurer l'interface de la conduite de contrôle :
# mkfifo control ack perf.pipe
Lancez
perf record
avec la configuration du fichier de contrôle et les événements que vous souhaitez activer :# perf record --control=fifo:control,ack -D -1 --no-buffering -e 'sched:*' -o - > perf.pipe
Dans cet exemple, la déclaration de
'sched:*'
après l'option-e
lanceperf record
avec les événements de l'ordonnanceur.Dans un second terminal, démarrez le côté lecture du tuyau de contrôle :
# cat perf.pipe | perf --no-pager script -i -
Le démarrage de la partie lecture du tube de contrôle déclenche le message suivant dans le premier terminal :
Events disabled
Dans un troisième terminal, activez un point de contrôle à l'aide du fichier de contrôle :
# echo 'enable sched:sched_process_fork' > control
Cette commande déclenche l'analyse par
perf
de la liste des événements en cours dans le fichier de contrôle, à la recherche de l'événement déclaré. Si l'événement est présent, le point de contrôle est activé et le message suivant apparaît dans le premier terminal :event sched:sched_process_fork enabled
Une fois le point de contrôle activé, le second terminal affiche la sortie de
perf
détectant le point de contrôle :bash 33349 [034] 149587.674295: sched:sched_process_fork: comm=bash pid=33349 child_comm=bash child_pid=34056