Aller au contenu

heaptrack - Profileur de mémoire heap pour Linux

heaptrack - Profileur de mémoire heap pour Linux

heaptrack (par KDE) est un profileur de mémoire heap pour Linux. Il trace toutes les allocations mémoire et annote chacune avec une trace de pile, donc vous pouvez trouver les fuites, les points d’allocation chauds, les allocations temporaires excessives, et l’utilisation maximale de mémoire. Il enregistre un fichier de données pendant que votre programme s’exécute, puis l’analyse soit avec heaptrack_gui (graphes en flamme riches et graphiques) soit heaptrack_print (en ligne de commande). Le surcoût est assez faible pour les charges de travail réalistes.

Installation

PlateformeCommande
Debian/Ubuntusudo apt install heaptrack heaptrack-gui
Fedorasudo dnf install heaptrack heaptrack-gui
Arch Linuxsudo pacman -S heaptrack heaptrack-qt
À partir des sourcesconstruire depuis le repo KDE/heaptrack (CMake)
Vérifierheaptrack --version

Enregistrement

CommandeDescription
heaptrack ./my-program argsProfiler une commande depuis le début
heaptrack -p PIDAttacher à un processus en cours d’exécution (basé sur GDB)
heaptrack -o out.zst ./progÉcrire vers un fichier de sortie spécifique
OutputCrée heaptrack.PROG.PID.zst dans le répertoire actuel

À la sortie, heaptrack affiche un résumé et le chemin vers le fichier de données enregistrées.

Analyse (GUI)

heaptrack_gui heaptrack.my-program.12345.zst
Vue GUIAffiche
SummaryRSS maximale, allocations totales, octets leaked
Flame graphAllocations attribuées aux piles d’appels
Top-down / bottom-upArbres d’appels par allocation
Caller/calleeNaviguer les relations d’allocation
ChartsAllocations/fuites/temporaire dans le temps

Analyse (CLI)

# Afficher les points d'allocation les plus chauds au terminal
heaptrack_print heaptrack.my-program.12345.zst | less
MétriqueSignification
peakMémoire heap maximale détenue à la fois
leakedMémoire allouée mais jamais libérée
allocationsNombre total d’allocations (variation)
temporaryAllocations libérées presque immédiatement (gaspillage)
OptionDescription
-a, --print-peakTrier par consommateurs de mémoire maximale
-l, --print-leaksAfficher les fuites
-t, --print-temporaryAfficher les points d’allocation temporaire
-d, --diff FILEDiff deux enregistrements

Comparer les exécutions (Diff)

# Voir ce qui a changé entre deux builds/exécutions
heaptrack_print -d before.zst after.zst

Ce que chaque métrique vous dit

SymptômeRegarder
RSS du processus continue de croîtreleaked — allocations jamais libérées
Coût CPU allocator élevéallocations / temporary — trop de variation
OOM sous chargepeak — réduire la mémoire simultanée maximale
Pointe mémoire au démarragegraphe en flamme au moment pertinent

Workflows courants

# Trouver une fuite dans un service
heaptrack ./myservice --run-workload
heaptrack_print -l heaptrack.myservice.*.zst | head -30

# Attribuer la mémoire maximale pendant une opération lourde (GUI est plus facile)
heaptrack ./batch-job
heaptrack_gui heaptrack.batch-job.*.zst   # inspecter le graphe en flamme « peak »

# Réduire la variation d'allocation temporaire dans une boucle chaude
heaptrack_print -t heaptrack.*.zst | head

heaptrack vs autres outils de mémoire

AspectheaptrackValgrind (massif/memcheck)Allocators intégrés
SurcoûtFaibleÉlevé (memcheck très élevé)Varie
Détection de fuiteOuiOui (memcheck)Partiel
Variation d’allocationOui (temporaire)massif focus sur peakNon
InterfaceGUI riche + CLITexte / massif-visualizerAucune
Meilleur pourProfilage rapide de heap sur exécutions réalistesVérifications de correction approfondieVérifications rapides

Ressources