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

BEZEICHNUNG

       memusage - Speicherverwendung eines Programms profilieren

ÜBERSICHT

       memusage [Option]… Programm [Programmoption]…

BESCHREIBUNG

       memusage  ist  ein  bash(1)-Skript, das die Speicherverwendung des Programms Programm profiliert. Es lädt
       die Bibliothek libmemusage.so vorab in die  Umgebung  des  Aufrufenden  (mittels  der  Umgebungsvariablen
       LD_PRELOAD,  siehe  ld.so(8)).  Die  Bibliothek  libmemusage.so  verfolgt  die Speicherbelegungen mittels
       Abfangens der Aufrufe von malloc(3), calloc(3), free(3) und realloc(3) nach;  optional  können  auch  die
       Aufrufe von mmap(2), mremap(2) und munmap(2) abgefangen werden.

       memusage  kann  die  gesammelten  Daten in textueller Form ausgeben oder es kann (mittels der nachfolgend
       beschriebenen Option -p) memusagestat(1) verwenden, um eine PNG-Datei zu erstellen,  die  die  graphische
       Darstellung der gesammelten Daten enthält.

   Speicherverwendungszusammenfassung
       Die von memusage ausgegebene Zeile »Memory usage summary« enthält drei Felder:

           heap total
                  Summe  der  Argumente  Größe  für alle malloc(3)-Aufrufe; Produkte der Argumente (nmemb*Größe)
                  aller calloc(3)-Aufrufe und die Summe aller Argumente Länge aller  mmap(2)-Aufrufe.  Im  Falle
                  von  realloc(3)  und mremap(2) wird die Summe aller Differenzen (neue Größe minus alter Größe)
                  hinzugefügt, falls die neue Größenreservierung die vorherige Größe überschreitet.

           heap peak
                  Maximum aller Argumente Größe aller malloc(3), alle Produkte von  nmemb*Größe  von  calloc(3),
                  aller Argumente Größe von realloc(3), Argumente Länge von mmap(2) und Argumente neue_Größe von
                  mremap(2).

           stack peak
                  Vor  dem  erstmaligen  Aufruf  jeder  überwachten Funktion wird die Adresse des Stapel-Zeigers
                  (Basis-Stapelzeiger) gesichert. Nach  jedem  Funktionsaufruf  wird  die  tatsächliche  Adresse
                  gelesen und die Differenz zum Basis-Stapelzeiger berechnet. Das Maximum dieser Differenzen ist
                  der »stack peak«.

       Direkt  nach  dieser  Zusammenfassungszeile  zeigt  eine  Tabelle  die  Anzahl der Aufrufe, den insgesamt
       reservierten oder freigegebenen Speicher und die Anzahl der fehlgeschlagenen Aufrufe für jede abgefangene
       Funktion. Für realloc(3) und mremap(2) zeigt das zusätzliche Feld »nomove« die Umreservierungen, die  die
       Adresse  eines  Blocks  änderten und das zusätzliche Feld »dec« zeigt die Umreservierungen, die die Größe
       eines Blocks verkleinerten. Für realloc(3) zeigt das zusätzliche Feld »free«  die  Umreservierungen,  die
       zur Freigabe eines Blocks führten (d.h. die umreservierte Größe war 0).

       Das  »realloc/total  memory«  der  Tabellenausgabe  von  memusage  berücksichtigt  Fälle nicht, bei denen
       realloc(3) zur Umreservierung eines Speicherblocks zur Verkleinerung der vorherigen Größe verwandt  wird.
       Dies  kann  zu einer Summe von allen »total memory«-Zellen führen (ausschließlich »free«), die größer als
       die Zelle »free/total memory« ist.

   Histogramm für Blockgrößen
       Das »Histogram for block  sizes«  stellt  eine  Aufteilung  der  Speicherreservierungen  in  verschiedene
       Topfgrößen dar.

OPTIONEN

       -n Name, --progname=Name
              Name des zu profilierenden Programms.

       -p Datei, --png=Datei
              Erstellt eine PNG-Graphik und speichert sie in Datei.

       -d Datei, --data=Datei
              Erstellt eine binäre Datendatei und speichert sie in Datei.

       -u, --unbuffered
              Puffert die Ausgabe nicht.

       -b Größe, --buffer=Größe
              Sammelt Größe Einträge, bevor sie herausgeschrieben werden.

       --no-timer
              Deaktiviert Timer-basierte (SIGPROF) Probennahme des Stapelzeigerwertes.

       -m, --mmap
              Verfolgt mmap(2), mremap(2) und munmap(2) auch nach.

       -?, --help
              Hilfe ausgeben und beenden.

       --usage
              Gibt eine kurze Gebrauchsinformation aus und beendet sich.

       -V, --version
              Gibt Versionsinformationen aus und beendet sich.

       Die folgenden Optionen sind nur bei der Erstellung graphischer Ausgaben relevant:

       -t, --time-based
              Verwendet die Zeit (anstelle der Anzahl der Funktionsaufrufe) als Skala für die X-Achse.

       -T, --total
              Zeichnet auch eine Graphik der gesamten Speicherverwendung.

       --title=Name
              Verwendet Name als Titel für die Graphik.

       -x Größe, --x-size=Größe
              Setzt die Breite der Graphik auf Größe Pixel.

       -y Größe, --y-size=Größe
              Setzt die Höhe der Graphik auf Größe Pixel.

EXIT-STATUS

       Der Exit-Status von memusage ist identisch zu dem Exit-Status des profilierten Programms.

FEHLER

       Um Fehler (auf Englisch) zu melden, siehe http://www.gnu.org/software/libc/bugs.html

BEISPIELE

       Es   folgt   ein   einfaches   Programm,  das  zyklisch  Speicherblöcke  neu  reserviert,  die  zu  einer
       Spitzenbelastung ansteigen und dann  zyklisch  kleinere  Speicherblöcke  neu  reserviert,  die  auf  Null
       zurückkehren.  Nach  der  Kompilierung  und  Ausführung  der  folgenden  Befehle,  ist  eine  Graphik der
       Speicherverwendung des Programms in der Datei memusage.png verfügbar:

           $ 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

   Programmquelltext
       #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);
       }

SIEHE AUCH

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

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder  neuer
       bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn  Sie  Fehler  in  der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die
       Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                             15. Juni 2024                                      memusage(1)