Perf
| Fiche express | |
|---|---|
| Domaine | Profiling CPU / compteurs matériels (performance monitoring) |
| Commande | perf
|
| Contexte | Sous-système noyau perf_events (depuis 2.6.31, 2009) — a largement remplacé OProfile sur les noyaux récents |
| Voir aussi | Strace, SystemTap, Oprofile |
perf est l'outil de profiling de performance basé sur le sous-système noyau perf_events, intégré depuis Linux 2.6.31 (2009). Il exploite les compteurs de performance matériels (hardware performance counters) du processeur ainsi que des points de trace (tracepoints) du noyau pour analyser finement l'impact d'une commande, d'un processus ou d'un cgroup sur les performances de la machine.
Installation
yum install perf -y
# ou, selon la distribution
apt install linux-tools-common linux-tools-$(uname -r)
Vue d'ensemble en direct
perf top affiche en continu les fonctions les plus consommatrices de CPU, à la manière de top mais au niveau des fonctions noyau et user-space :
perf top
Statistiques d'impact
perf stat mesure les compteurs de performance (cycles, instructions, cache-misses, context-switches...) sur une interface, un processus déjà lancé ou l'exécution d'une commande :
perf stat eth0
perf stat -p 31185 # statistiques sur un processus déjà lancé (par PID)
perf stat commande arg1 arg2 # statistiques sur l'exécution d'une commande
Enregistrement et rapport
perf record capture les évènements de profiling dans un fichier (perf.data par défaut), que perf report permet ensuite d'explorer :
perf record # enregistre un profil (Ctrl+C pour arrêter)
perf record -p PID # cible un processus précis
perf report # affiche le rapport du fichier enregistré (perf.data)
Évènements disponibles
perf list liste les évènements de profiling disponibles sur la machine (compteurs matériels du CPU, tracepoints noyau, sondes logicielles...) :
perf list
Tracer les appels système
perf trace fonctionne comme strace (trace des appels système d'un processus) mais avec un overhead plus faible, en s'appuyant directement sur perf_events :
perf trace
perf trace -p PID