Salta ai contenuti

heaptrack - Profiler di Memoria Heap per Linux

heaptrack - Profiler di Memoria Heap per Linux

heaptrack (di KDE) è un profiler di memoria heap per Linux. Traccia tutte le allocazioni di memoria e annota ciascuna con una traccia di stack, quindi puoi trovare perdite, hotspot di allocazione, allocazioni temporanee eccessive e utilizzo massimo di memoria. Registra un file di dati mentre il tuo programma è in esecuzione, quindi lo analizza con heaptrack_gui (grafici flame ricchi e grafici) o heaptrack_print (linea di comando). L”overhead è sufficientemente basso per carichi di lavoro realistici.

Installazione

PiattaformaComando
Debian/Ubuntusudo apt install heaptrack heaptrack-gui
Fedorasudo dnf install heaptrack heaptrack-gui
Arch Linuxsudo pacman -S heaptrack heaptrack-qt
Da sorgenticompila dal repo KDE/heaptrack (CMake)
Verificaheaptrack --version

Registrazione

ComandoDescrizione
heaptrack ./my-program argsProfila un comando dall”inizio
heaptrack -p PIDAllega a un processo in esecuzione (basato su GDB)
heaptrack -o out.zst ./progScrivi in un file di output specifico
OutputCrea heaptrack.PROG.PID.zst nella directory corrente

All”uscita, heaptrack stampa un riepilogo e il percorso del file di dati registrato.

Analisi (GUI)

heaptrack_gui heaptrack.my-program.12345.zst
Vista GUIMostra
RiepilogoRSS di picco, allocazioni totali, byte persi
Grafico flameAllocazioni attribuite a stack di chiamate
Top-down / bottom-upCall tree per allocazione
Caller/calleeNaviga relazioni di allocazione
GraficiAllocazioni/perdite/temporanee nel tempo

Analisi (CLI)

# Stampa i principali hotspot di allocazione nel terminale
heaptrack_print heaptrack.my-program.12345.zst | less
MetricaSignificato
peakMemoria heap massima mantenuta contemporaneamente
leakedMemoria allocata ma mai liberata
allocationsNumero totale di allocazioni (churn)
temporaryAllocazioni liberate quasi immediatamente (spreco)
OpzioneDescrizione
-a, --print-peakOrdina per consumatori di memoria di picco
-l, --print-leaksMostra perdite
-t, --print-temporaryMostra hotspot di allocazioni temporanee
-d, --diff FILEDiff due registrazioni

Confronto Tra Esecuzioni (Diff)

# Vedi cosa è cambiato tra due build/esecuzioni
heaptrack_print -d before.zst after.zst

Cosa Ogni Metrica Ti Dice

SintomoGuarda
RSS di processo continua a crescereleaked — allocazioni mai liberate
Costo della CPU dell”allocatore altoallocations / temporary — troppo churn
OOM sotto caricopeak — riduci la memoria simultanea massima
Picco di memoria all”avviografico flame al range di tempo pertinente

Flussi di Lavoro Comuni

# Trova una perdita in un servizio
heaptrack ./myservice --run-workload
heaptrack_print -l heaptrack.myservice.*.zst | head -30

# Attribuisci memoria di picco durante un''operazione pesante (GUI è più facile)
heaptrack ./batch-job
heaptrack_gui heaptrack.batch-job.*.zst   # ispeziona il grafico flame "peak"

# Riduci churn di allocazioni temporanee in un ciclo hot
heaptrack_print -t heaptrack.*.zst | head

heaptrack vs Altri Strumenti di Memoria

AspettoheaptrackValgrind (massif/memcheck)Allocatori integrati
OverheadBassoAlto (memcheck molto alto)Varia
Rilevamento perditeSì (memcheck)Parziale
Churn di allocazioneSì (temporanea)massif si concentra su piccoNo
UIGUI ricca + CLITesto / massif-visualizerNessuno
Migliore perProfilazione heap veloce su esecuzioni realisticheControlli di correttezza profondaControlli rapidi

Risorse