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 Copier lienLien copié sur presse-papiers!
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
perfest 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
# mkfifo control ack perf.pipeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Lancez
perf recordavec 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
# perf record --control=fifo:control,ack -D -1 --no-buffering -e 'sched:*' -o - > perf.pipeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Dans cet exemple, la déclaration de
'sched:*'après l'option-elanceperf recordavec 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 -
# cat perf.pipe | perf --no-pager script -i -Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le démarrage de la partie lecture du tube de contrôle déclenche le message suivant dans le premier terminal :
Events disabled
Events disabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# echo 'enable sched:sched_process_fork' > controlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Cette commande déclenche l'analyse par
perfde 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
event sched:sched_process_fork enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow Une fois le point de contrôle activé, le second terminal affiche la sortie de
perfdé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
bash 33349 [034] 149587.674295: sched:sched_process_fork: comm=bash pid=33349 child_comm=bash child_pid=34056Copy to Clipboard Copied! Toggle word wrap Toggle overflow