hotspot - GUI for Linux perf Profiles Cheatsheet
hotspot (von KDAB) ist ein Qt GUI für den Linux perf Profiler. Du Zeichnest mit perf record wie üblich auf, Dann öffne das resultierende perf.data in hotspot zum Erkunden als Interaktiv Flame Graphs, Top-Down und Bottom-Up Call Trees, Caller/Callee Ansichten, Pro-Thread Timelines und Off-CPU Analyse. Es Verwandelt den Schwer-zu-lesenden Output von perf report in ein Visuell, Navigierbar Profil — und es kann Sogar Start und Aufzeichnung perf für Dich.
Installation
| Plattform | Befehl |
|---|
| Debian/Ubuntu | sudo apt install hotspot |
| Fedora | sudo dnf install hotspot |
| Arch Linux | sudo pacman -S hotspot |
| AppImage | Download von der GitHub Releases Seite (Portabel) |
| Erfordert | linux-perf / perf Installiert |
Aufzeichnung (Zwei Wege)
# Option A: Aufzeichnung mit perf, Dann öffne in hotspot
perf record --call-graph dwarf -F 999 ./my-program args
hotspot perf.data
# Option B: Lasse hotspot Aufzeichnung für Dich (GUI "Record" Tab)
hotspot # Wähle das Binary, Optionen, und Klick Record
| perf Flag | Zweck |
|---|
--call-graph dwarf | Beste Stack Unwinding (Braucht Debug Info) |
--call-graph fp | Frame-Pointer Unwinding (Schneller, Braucht -fno-omit-frame-pointer) |
-F 999 | Taste auf 999 Hz |
-p PID | Aufzeichnung ein laufenden Prozess |
-g | Ermögliche Call Graphs |
Ansichten
| Ansicht | Zeigt |
|---|
| Zusammenfassung | Sample Counts, Threads, Hotteste Symbols |
| Flame Graph | Aggregierte Stacks; Breite = Zeit |
| Top Down | Call Tree von Roots zu Leaves |
| Bottom Up | Heiße Blatt Funktionen und Ihre Callers |
| Caller/Callee | Pro-Symbol Inbound/Outbound Cost |
| Timeline | Pro-Thread Aktivität über Zeit |
Navigieren
| Aktion | Nutzung |
|---|
| Klick ein Frame | Zoom den Flame Graph in diesen Subtree |
| Suche | Filter Symbols nach Namen |
| Wähle Zeit Bereich (Timeline) | Fokus Analyse auf ein Phase |
| Invert (Bottom-Up) | Finde Teure Blatt Funktionen |
| Filter nach Thread/Prozess | Isolier ein Worker |
Off-CPU Analyse
hotspot kann Visualisiere wo Threads waren Blockiert (Wartend), nicht Nur CPU Brennende — Hilfreich für Latenz Probleme.
# Aufzeichnung Scheduler Switches für Off-CPU Insight
perf record --call-graph dwarf -e cycles \
-e sched:sched_switch --switch-events ./my-program
hotspot perf.data
Bekomme Gute Stacks
| Brauche | Macht |
|---|
| Lesbare Symbols | Baue mit Debug Info (-g), Nicht Strip |
| Tiefe Stacks | --call-graph dwarf |
| Billig Stacks | Frame Pointers + --call-graph fp |
| Kernel Symbols | sysctl kernel.kptr_restrict=0, Führe perf als Root aus |
| perf Permissions | sysctl kernel.perf_event_paranoid=1 (oder Niedriger) |
Common Workflows
# Profile ein CPU-Gebunden Programm und Erkunde den Flame Graph
perf record --call-graph dwarf -F 999 ./app
hotspot perf.data
# Untersuche Warum ein Request Langsam ist (Blockiert/Off-CPU Zeit)
perf record --call-graph dwarf -e sched:sched_switch --switch-events ./server
hotspot perf.data # Inspiziere den Off-CPU Flame Graph
hotspot vs Andere perf Front Ends
| Aspekt | hotspot | perf Report | FlameGraph Scripts | samply |
|---|
| UI | Qt GUI | TUI/Text | Static SVG | Firefox Profiler |
| Off-CPU | Ja | Begrenzt | Manuell | Begrenzt |
| Aufzeichnung für Dich | Ja | N/A (perf) | Nein | Ja |
| Beste für | Interaktiv perf Analyse | Schnell Text Ansicht | Shareable SVGs | Cross-Plattform |
Ressourcen