hotspot - GUI pour les profils Linux perf
hotspot (par KDAB) est une GUI Qt pour le profileur Linux perf. Vous enregistrez avec perf record comme d’habitude, puis ouvrez le perf.data résultant dans hotspot pour l’explorer comme des graphes en flamme interactifs, des arbres d’appels haut-bas et bas-haut, des vues appelant/appelé, des chronologies par thread, et une analyse off-CPU. Elle transforme la sortie difficile à lire de perf report en un profil visuel et navigable — et elle peut même lancer et enregistrer perf pour vous.
Installation
| Plateforme | Commande |
|---|
| Debian/Ubuntu | sudo apt install hotspot |
| Fedora | sudo dnf install hotspot |
| Arch Linux | sudo pacman -S hotspot |
| AppImage | télécharger depuis la page GitHub Releases (portable) |
| Exigences | linux-perf / perf installé |
Enregistrement (deux façons)
# Option A : enregistrer avec perf, puis ouvrir dans hotspot
perf record --call-graph dwarf -F 999 ./my-program args
hotspot perf.data
# Option B : laisser hotspot enregistrer pour vous (onglet GUI « Record »)
hotspot # choisir le binaire, les options, et appuyer sur Record
| flag perf | Objectif |
|---|
--call-graph dwarf | Meilleur déroulage de pile (nécessite les infos de debug) |
--call-graph fp | Déroulage de pointeur de cadre (plus rapide, nécessite -fno-omit-frame-pointer) |
-F 999 | Échantillon à 999 Hz |
-p PID | Enregistrer un processus en cours d’exécution |
-g | Activer les graphes d’appels |
Vues
| Vue | Affiche |
|---|
| Summary | Comptes d’exemples, threads, symboles les plus chauds |
| Flame Graph | Piles agrégées ; largeur = temps |
| Top Down | Arbre d’appels des racines aux feuilles |
| Bottom Up | Fonctions de feuille chaudes et leurs appelants |
| Caller/Callee | Coût entrant/sortant par symbole |
| Timeline | Activité par thread dans le temps |
Naviguer
| Action | Utilisation |
|---|
| Cliquer sur un cadre | Zoomer le graphe en flamme dans ce sous-arbre |
| Recherche | Filtrer les symboles par nom |
| Sélectionner la plage de temps (chronologie) | Concentrer l’analyse sur une phase |
| Inverser (bas-haut) | Trouver les fonctions de feuille coûteuses |
| Filtrer par thread/processus | Isoler un worker |
Analyse off-CPU
hotspot peut visualiser où les threads étaient bloqués (en attente), pas seulement brûlant CPU — utile pour les problèmes de latence.
# Enregistrer les commutateurs de planificateur pour l'aperçu off-CPU
perf record --call-graph dwarf -e cycles \
-e sched:sched_switch --switch-events ./my-program
hotspot perf.data
Obtenir de bonnes piles
| Besoin | Faire |
|---|
| Symboles lisibles | Construire avec les infos de debug (-g), ne pas strip |
| Piles profondes | --call-graph dwarf |
| Piles bon marché | Pointeurs de cadre + --call-graph fp |
| Symboles du noyau | sysctl kernel.kptr_restrict=0, exécuter perf en tant que root |
| Permissions perf | sysctl kernel.perf_event_paranoid=1 (ou inférieur) |
Workflows courants
# Profiler un programme lié au CPU et explorer le graphe en flamme
perf record --call-graph dwarf -F 999 ./app
hotspot perf.data
# Enquêter sur la lenteur d'une requête (temps bloqué/off-CPU)
perf record --call-graph dwarf -e sched:sched_switch --switch-events ./server
hotspot perf.data # inspecter le graphe en flamme off-CPU
hotspot vs autres interfaces perf
| Aspect | hotspot | perf report | Scripts FlameGraph | samply |
|---|
| Interface | Qt GUI | TUI/texte | SVG statique | Firefox Profiler |
| Off-CPU | Oui | Limité | Manuel | Limité |
| Enregistrements pour vous | Oui | N/A (perf) | Non | Oui |
| Meilleur pour | Analyse perf interactive | Vue texte rapide | SVG partageables | Multiplateforme |
Ressources