hotspot - GUI para Perfis Linux perf
hotspot (por KDAB) é uma GUI Qt para o profiler perf do Linux. Você grava com perf record como de costume, depois abre o perf.data resultante em hotspot para explorá-lo como gráficos de chama interativos, árvores de chamada top-down e bottom-up, vistas de caller/callee, timelines por thread e análise off-CPU. Transforma a saída difícil de ler de perf report em um perfil visual navegável — e pode até iniciar e gravar perf para você.
Instalação
| Plataforma | Comando |
|---|
| Debian/Ubuntu | sudo apt install hotspot |
| Fedora | sudo dnf install hotspot |
| Arch Linux | sudo pacman -S hotspot |
| AppImage | faça download da página de Releases do GitHub (portável) |
| Requer | linux-perf / perf instalado |
Gravação (Dois Caminhos)
# Opção A: grave com perf, depois abra em hotspot
perf record --call-graph dwarf -F 999 ./my-program args
hotspot perf.data
# Opção B: deixe hotspot gravar para você (aba "Record" na GUI)
hotspot # escolha o binário, opções, e clique Record
| Flag de perf | Propósito |
|---|
--call-graph dwarf | Melhor unwinding de pilha (precisa info de debug) |
--call-graph fp | Unwinding de apontador de frame (mais rápido, precisa -fno-omit-frame-pointer) |
-F 999 | Amostra em 999 Hz |
-p PID | Grave um processo em execução |
-g | Habilite gráficos de chamada |
Vistas
| Vista | Mostra |
|---|
| Resumo | Contagens de amostra, threads, símbolos mais quentes |
| Gráfico de Chama | Pilhas agregadas; largura = tempo |
| Top Down | Árvore de chamada de raízes para folhas |
| Bottom Up | Funções folha quentes e seus chamadores |
| Caller/Callee | Custo inbound/outbound por símbolo |
| Timeline | Atividade por thread com o tempo |
Navegando
| Ação | Uso |
|---|
| Clique em um frame | Zoom o gráfico de chama naquela subárvore |
| Procure | Filtre símbolos por nome |
| Selecione intervalo de tempo (timeline) | Analise focus em uma fase |
| Inverta (bottom-up) | Encontre funções de folha caras |
| Filtre por thread/processo | Isole um worker |
Análise Off-CPU
hotspot pode visualizar onde threads estavam bloqueadas (esperando), não apenas queimando CPU — útil para problemas de latência.
# Grave mudanças de scheduler para insight off-CPU
perf record --call-graph dwarf -e cycles \
-e sched:sched_switch --switch-events ./my-program
hotspot perf.data
Obtendo Boas Pilhas
| Necessidade | Faça |
|---|
| Símbolos legíveis | Construa com info de debug (-g), não despoje |
| Pilhas profundas | --call-graph dwarf |
| Pilhas baratas | Apontadores de frame + --call-graph fp |
| Símbolos de kernel | sysctl kernel.kptr_restrict=0, execute perf como root |
| Permissões de perf | sysctl kernel.perf_event_paranoid=1 (ou inferior) |
Workflows Comuns
# Perfil um programa vinculado a CPU e explore o gráfico de chama
perf record --call-graph dwarf -F 999 ./app
hotspot perf.data
# Investigue por que uma requisição é lenta (tempo bloqueado/off-CPU)
perf record --call-graph dwarf -e sched:sched_switch --switch-events ./server
hotspot perf.data # inspecione o gráfico de chama off-CPU
hotspot vs Outros Fronts-End de perf
| Aspecto | hotspot | perf report | Scripts FlameGraph | samply |
|---|
| UI | Qt GUI | TUI/texto | SVG estático | Firefox Profiler |
| Off-CPU | Sim | Limitado | Manual | Limitado |
| Grava para você | Sim | N/A (perf) | Não | Sim |
| Melhor para | Análise interativa de perf | Vista rápida de texto | SVGs compartilháveis | Cross-platform |
Recursos