hotspot - GUI per Profili Linux perf
hotspot (di KDAB) è una GUI Qt per il profiler Linux perf. Registri con perf record come al solito, poi apri il risultante perf.data in hotspot per esplorarlo come grafici flame interattivi, call tree top-down e bottom-up, viste caller/callee, timeline per-thread e analisi off-CPU. Trasforma l”output difficile da leggere di perf report in un profilo visivo e navigabile — e può persino lanciare e registrare perf per te.
Installazione
| Piattaforma | Comando |
|---|
| Debian/Ubuntu | sudo apt install hotspot |
| Fedora | sudo dnf install hotspot |
| Arch Linux | sudo pacman -S hotspot |
| AppImage | scarica dalla pagina GitHub Releases (portatile) |
| Richiede | linux-perf / perf installato |
Registrazione (Due Modi)
# Opzione A: registra con perf, poi apri in hotspot
perf record --call-graph dwarf -F 999 ./my-program args
hotspot perf.data
# Opzione B: lascia che hotspot registri per te (scheda "Record" della GUI)
hotspot # scegli il binario, le opzioni e premi Record
| Flag di perf | Scopo |
|---|
--call-graph dwarf | Migliore srotolamento dello stack (richiede info di debug) |
--call-graph fp | Srotolamento frame-pointer (più veloce, richiede -fno-omit-frame-pointer) |
-F 999 | Campiona a 999 Hz |
-p PID | Registra un processo in esecuzione |
-g | Abilita call graph |
Viste
| Vista | Mostra |
|---|
| Riepilogo | Conteggi di campioni, thread, simboli più hot |
| Grafico Flame | Stack aggregati; larghezza = tempo |
| Top Down | Albero di chiamate da radici a foglie |
| Bottom Up | Funzioni foglia hot e i loro chiamanti |
| Caller/Callee | Costo inbound/outbound per-simbolo |
| Timeline | Attività per-thread nel tempo |
Navigazione
| Azione | Usa |
|---|
| Clicca su un frame | Zoom il grafico flame in quel sottoalbero |
| Ricerca | Filtra simboli per nome |
| Seleziona intervallo di tempo (timeline) | Metti a fuoco l”analisi su una fase |
| Inverti (bottom-up) | Trova funzioni foglia costose |
| Filtra per thread/processo | Isolaun worker |
Analisi Off-CPU
hotspot può visualizzare dove i thread erano bloccati (in attesa), non solo bruciando CPU — utile per problemi di latenza.
# Registra commutatori dello scheduler per intuizioni off-CPU
perf record --call-graph dwarf -e cycles \
-e sched:sched_switch --switch-events ./my-program
hotspot perf.data
Ottenere Stack Buoni
| Esigenza | Fai |
|---|
| Simboli leggibili | Compila con info di debug (-g), non strappare |
| Stack profondi | --call-graph dwarf |
| Stack economici | Frame pointer + --call-graph fp |
| Simboli del kernel | sysctl kernel.kptr_restrict=0, esegui perf come root |
| Permessi di perf | sysctl kernel.perf_event_paranoid=1 (o inferiore) |
Flussi di Lavoro Comuni
# Profila un programma CPU-bound ed esplora il grafico flame
perf record --call-graph dwarf -F 999 ./app
hotspot perf.data
# Indaga perché una richiesta è lenta (tempo bloccato/off-CPU)
perf record --call-graph dwarf -e sched:sched_switch --switch-events ./server
hotspot perf.data # ispeziona il grafico flame off-CPU
hotspot vs Altri Front-End di perf
| Aspetto | hotspot | perf report | Script FlameGraph | samply |
|---|
| UI | GUI Qt | TUI/testo | SVG statico | Firefox Profiler |
| Off-CPU | Sì | Limitato | Manuale | Limitato |
| Registra per te | Sì | N/A (perf) | No | Sì |
| Migliore per | Analisi interattiva di perf | Visualizzazione testo veloce | SVG condivisibili | Cross-platform |
Risorse