5.3.3. Profiler les espaces du tas et de pile avec Massif
Massif mesure l'espace du tas utilisé par un programme spécifique ; l'espace utile, ainsi que tout espace supplémentaire alloué à la comptabilité et à des fins d'alignement. Il peut vous aider à réduire la quantité de mémoire utilisée par votre programme, ce qui peut augmenter la vitesse de votre programme et réduire les chances que votre programme n'épuise l'espace swap de la machine sur laquelle il est exécuté. Massif peut aussi fournir des détails sur les parties de votre programme qui sont responsables pour l'allocation de la mémoire du tas. Les programmes exécutés avec Massif fonctionnent environ 20 fois plus lentement que leur vitesse d'exécution normale.
Pour profiler l'utilisation du tas d'un programme, spécifiez
massif
comme l'outil Valgrind que vous souhaitez utiliser :
# valgrind --tool=massif programme
Les données de profilage rassemblées par Massif sont écrites sur un fichier, qui est appelé par défaut
massif.out.pid
, où pid est l'ID de processus du programme spécifié.
Les données de profilage peuvent aussi être cartographiées avec la commande
ms_print
, ainsi :
# ms_print massif.out.pid
Ceci produit un graphe affichant la consommation de mémoire pendant l'exécution du programme, ainsi que des informations détaillées sur les sites responsables de l'allocation à divers points du programme, y compris au summum de l'allocation de mémoire.
Massif offre un nombre d'options de ligne de commande pouvant être utilisées pour diriger la sortie de l'outil. Certaines des options disponibles incluent :
--heap
- Spécifie s'il faut effectuer le profilage du tas. La valeur par défaut est
yes
(oui). Le profilage du tas peut être désactivé en définissant cette option surno
(non). --heap-admin
- Spécifie le nombre d'octets par bloc à utiliser pour l'administration lorsque le profilage du tas est activé. La valeur par défaut est de
8
octets par bloc. --stacks
- Spécifie s'il faut effectuer le profilage de la pile. La valeur par défaut est
no
(désactivé). Pour activer le profilage de la pile, définissez cette option suryes
, mais n'oubliez pas que cela va fortement ralentir Massif. Remarquez aussi que Massif suppose que la pile principale a une taille de zéro au démarrage afin de mieux indiquer la taille de la portion de la pile sur laquelle le programme en cours de profilage est en contrôle. --time-unit
- Spécifie l'unité de temps utilisée pour le profilage. Il existe trois valeurs valides pour cette option : les instructions exécutées (
i
), la valeur par défaut, qui est utile dans la plupart des cas ; le temps réel (ms
, en millisecondes), qui peut être utile dans certains cas ; et les octets alloués ou dés-alloués sur le tas et/ou sur la pile (B
), ce qui est utile pour des programmes exécutés de manière très rapide et pour effectuer des tests, car ceux-ci sont les plus facilement reproductibles sur différentes machines. Cette option est utile lors de l'impression du graphe de la sortie de Massif avecms_print
.
Pour une liste complète des options, veuillez vous reporter à la documentation incluse sur
/usr/share/doc/valgrind-version/valgrind_manual.pdf
.