Provided by: manpages-fr_4.27.0-1_all bug

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.

Pages du manuel de Linux 6.9.1                    15 juin 2024                                       memusage(1)