Perf

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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

Voir aussi

  • Strace — trace les appels système d'un processus (approche plus légère que SystemTap)
  • SystemTap — instrumentation noyau plus poussée (probes), plus lourde à mettre en œuvre
  • Oprofile — profiling CPU historique, largement remplacé par perf sur les noyaux récents