Man page - memusage(1)

Packages contains this manual

Available languages:

en fr da ja ru ro de

Manual

memusage

NOM
SYNOPSIS
DESCRIPTION
RĂ©sumĂ© de l’utilisation de la mĂ©moire
Histogrammes des tailles de bloc
OPTIONS
CODE DE RETOUR
BOGUES
EXEMPLES
Source du programme
VOIR AUSSI
TRADUCTION

NOM

memusage - Profiler l’utilisation par un programme de la mĂ©moire

SYNOPSIS

memusage [ option ]... programme [ optionprogramme ]...

DESCRIPTION

memusage est un script bash qui profile l’utilisation de la mĂ©moire par le programme programme . Il prĂ©charge la bibliothĂšque libmemusage.so dans l’environnement de l’appelant (au moyen de la variable d’environnement LD_PRELOAD ; voir ld.so (8)). La bibliothĂšque libmemusage.so trace l’allocation de mĂ©moire en interceptant les appels Ă  malloc (3), calloc (3), free (3) et realloc (3) ; facultativement, les appels Ă  mmap (2), mremap (2) et munmap (2) peuvent aussi ĂȘtre interceptĂ©s.

memusage peut produire les donnĂ©es collectĂ©es sous une forme textuelle ou il peut utiliser memusagestat (1) (voir l’option -p ci-dessous) pour crĂ©er un fichier PNG fournissant la reprĂ©sentation graphique des donnĂ©es collectĂ©es.

RĂ©sumĂ© de l’utilisation de la mĂ©moire

La ligne « Memory usage summary » produite par memusage contient trois champs :

heap total

Somme des paramĂštres taille de tous les appels malloc (3), les produits ( nmemb * taille ) de tous les appels calloc (3) et la somme des paramĂštres longueur de tous les appels mmap (2). Dans le cas d’appels realloc (3) et mremap (2), si la nouvelle taille d’une allocation est plus grande que la taille prĂ©cĂ©dente, la somme de toutes les diffĂ©rences (nouvelle taille moins ancienne taille) est ajoutĂ©e.

heap peak

Maximum de tous les paramĂštres taille de malloc (3), de tous les produits ( nmemb * taille ) de calloc (3) et de tous les paramĂštres taille de realloc , des paramĂštres longueur de mmap (2) et des paramĂštres nouvelle_taille de mremap (2).

stack peak

Avant le premier appel Ă  toute fonction suivie, l’adresse du pointeur de pile (pointeur de pile de base) est sauvegardĂ©e. AprĂšs chaque appel de fonction, l’adresse du pointeur de pile effectif est lue et la diffĂ©rence avec le pointeur de pile de base est calculĂ©e. La plus grande de ces diffĂ©rences est alors le « pic de la pile » (« stack peak »).

ImmĂ©diatement aprĂšs la ligne de rĂ©sumĂ©, un tableau montre le nombre d’appels, le total de la mĂ©moire allouĂ©e ou dĂ©sallouĂ©e et le nombre d’échecs d’appels pour chaque fonction interceptĂ©e. Pour realloc (3) et mremap (2), le champ supplĂ©mentaire « nomove » montre les rĂ©allocations qui ont changĂ© l’adresse d’un bloc et le champ supplĂ©mentaire « dec » montre les rĂ©allocations qui ont diminuĂ© la taille du bloc. Pour realloc (3), le champ supplĂ©mentaire « free » montre les rĂ©allocations qui ont provoquĂ© la libĂ©ration d’un bloc (c’est-Ă -dire dont la taille rĂ©allouĂ©e est de 0 ).

La colonne « realloc/total memory » du tableau produit par memusage ne reflĂšte pas les cas oĂč realloc (3) est utilisĂ© pour rĂ©allouer un bloc de mĂ©moire pour qu’il ait une taille plus petite qu’avant. Ce cas peut faire que la somme de toutes les cellules « total memory » (sauf « free ») est plus grande que la cellule « free/total memory ».

Histogrammes des tailles de bloc

L’« Histogram for block sizes » fournit une rĂ©partition des allocations de mĂ©moire en paquets de tailles diverses.

OPTIONS

-n nom , --progname= nom

Nom du fichier de programme Ă  profiler.

-p fichier , --png= fichier

CrĂ©er un fichier graphique PNG et l’enregistrer dans fichier .

-d fichier , --data= fichier

CrĂ©er un fichier de donnĂ©es binaires et l’enregistrer dans fichier .

-u , --unbuffered

Ne pas mettre la sortie en tampon.

-b taille , --buffer= taille

Rassembler les entrées de taille avant de les écrire.

--no-timer

DĂ©sactiver l’échantillonnage basĂ© sur le temporisateur ( SIGPROF ) de la valeur du pointeur de pile.

-m , --mmap

Tracer aussi mmap (2), mremap (2) et munmap (2).

-? , --help

Afficher l’aide puis quitter.

--usage

Afficher une brùve description sur l’utilisation et quitter.

-V , --version

Afficher les informations de version, puis quitter.

Les options suivantes ne s’appliquent que lors de la crĂ©ation d’une
sortie graphique :
-t
, --time-based

Utiliser le temps (plutĂŽt que le nombre d’appels de fonction) comme Ă©chelle de l’axe X.

-T , --total

CrĂ©er aussi un graphique de l’usage total de la mĂ©moire.

--title= nom

Utiliser nom comme titre du graphique.

-x taille , --x-size= taille

CrĂ©er un graphique d’une largeur de taille pixels.

-y taille , --y-size= taille

CrĂ©er un graphique d’une hauteur de taille pixels.

CODE DE RETOUR

Le code de retour est égal au code de retour du programme profilé.

BOGUES

Pour signaler des bogues, voir http://www.gnu.org/software/libc/bugs.html

EXEMPLES

Ci-dessous se trouve un programme simple qui rĂ©alloue de façon cyclique un bloc de mĂ©moire qui atteint un sommet avant de rĂ©allouer la mĂ©moire de façon cyclique dans des blocs plus petits qui diminuent jusqu’à zĂ©ro. AprĂšs compilation du programme et exĂ©cution des commandes suivantes, un graphique de l’utilisation de la mĂ©moire par le programme se trouve dans le fichier memusage.png :

$ memusage --data=memusage.dat ./a.out
...
Memory usage summary: heap total: 45200, heap peak: 6440, stack peak: 224
total calls total memory failed calls
malloc| 1 400 0
realloc| 40 44800 0 (nomove:40, dec:19, free:0)
calloc| 0 0 0
free| 1 440
Histogram for block sizes:
192-207 1 2% ================
...
2192-2207 1 2% ================
2240-2255 2 4% =================================
2832-2847 2 4% =================================
3440-3455 2 4% =================================
4032-4047 2 4% =================================
4640-4655 2 4% =================================
5232-5247 2 4% =================================
5840-5855 2 4% =================================
6432-6447 1 2% ================
$ memusagestat memusage.dat memusage.png

Source du programme

#include <stdio.h>
#include <stdlib.h>
#define CYCLES 20
int
main(int argc, char *argv[])
{
int i, j;
size_t size;
int *p;
size = sizeof(*p) * 100;
printf("malloc: %zu\n", size);
p = malloc(size);
for (i = 0; i < CYCLES; i++) {
if (i < CYCLES / 2)
j = i;
else
j--;
size = sizeof(*p) * (j * 50 + 110);
printf("realloc: %zu\n", size);
p = realloc(p, size);
size = sizeof(*p) * ((j + 1) * 150 + 110);
printf("realloc: %zu\n", size);
p = realloc(p, size);
}
free(p);
exit(EXIT_SUCCESS);
}

VOIR AUSSI

memusagestat (1), mtrace (1), ld.so (8)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .