Man page - memusage(1)

Packages contains this manual

Available languages:

en fr da ja ru ro de

Manual

memusage

NAVN
SYNOPSIS
BESKRIVELSE
Overblik over hukommelsesforbruget
Histogram for blokstørrelser
TILVALG
AFSLUT-STATUS
FEJL
EKSEMPLER
Programkilde
SE OGSÅ
OVERSÆTTELSE

NAVN

memusage - lav en profil over forbruget af hukommelse for et program

SYNOPSIS

memusage [ tilvalg ]... program [ programtilvalg ]...

BESKRIVELSE

memusage er et bash-skript, der profilerer brugen af hukommelse for programmet program . Biblioteket libmemusage.so indlæses først i kalderens miljø (via miljøvariablen LD_PRELOAD ; se ld.so (8)). Biblioteket libmemusage.so registrerer hukommelsesallokering ved at opfange kald til malloc (3), calloc (3), free (3) og realloc (3); valgfrit kan kald til mmap (2), mremap (2) og munmap (2) også opfanges.

memusage kan vise de indsamlede data i tekstform, eller kan bruge memusagestat (1) (se tilvalget the -p , nedenfor) til at oprette en PNG-fil indeholdende grafisk repræsentation af de indsamlede data.

Overblik over hukommelsesforbruget

»Overblik over hukommelsesforbruget«-linjeresultatet fra memusage indeholder tre felter:

heap total

Sum af størrelse -argumenter for alle malloc (3)-kald, produkter for argumenter ( nmemb * størrelse ) for alle calloc (3)-kald og summen af længde -argumenter for alle mmap (2)-kald. I tilfældet realloc (3) og mremap (2), hvis den nye størrelse for en allokering er større end den tidligere størrelse, så tilføjes summen for alle sådanne forskelle (ny størrelse minus gammel størrelse).

heap peak

Maksimum for alle størrelse -argumenter for malloc (3), alle produkter for nmemb * størrelse for calloc (3), alle størrelse -argumenter for realloc (3), længde -argumenter for mmap (2) og nu_størrelse -argumenter for mremap (2).

stack peak

Før det første kald til enhver overvåget funktion så gemmes stakpegeradressen (grundstakpegeren). Efter hvert funktionskald så læses den faktiske stakpegeradrese og forskellen fra grundstakpegeren beregnes. Maksimum for disse forskelle er hvor stakken havde toppunkt.

Umiddelbart efter denne summerede linje viser en tabel antallet af kald, samlet hukommelse allokeret eller deallokeret samt antallet af mislykkede kald for hver opfanget funktion. For realloc (3) og mremap (2), viser det ekstra felt »nomove« reallokeringer, der ændrede adressen for en blok og det ekstra felt »dec« viser reallokeringer, der formindskede blokstørrelsen. For realloc (3) viser det ekstra felt »free« reallokeringer der fik en blok til at blive frigivet (dvs. den reallokerede størrelse var 0).

»realloc/total memory« for tabelresultatet fra memusage reflekterer ikke tilfælde hvor realloc (3) bruges til at reallokere en hukommelsesblok til en mindre størrelse end tidligere. Dette kan medføre at sum for alle »total memory«-celler (eksklusive »free«) er større end »free/total memory«-cellen.

Histogram for blokstørrelser

»Histogram for blokstørrelser« tilbyder en nedbrydning af hukommelsesallokeringer til diverse bucket-størrelser.

TILVALG

-n navn , --progname= navn

Navn på programfilen der skal profileres.

-p fil , --png= fil

Opret PNG-grafik og lagr denne i fi .

-d fil , --data= fil

Opret binær datafil og lagr denne i fil .

-u , --unbuffered

Mellemlagr ikke resultatet.

-b størrelse , --buffer= størrelse

Indsaml størrelse -elementer før de skrives.

--no-timer

Deaktiver timer-baseret ( SIGPROF ) sampling af stakpegerværdi.

-m , --mmap

Registrer også mmap (2), mremap (2) og munmap (2).

-? , --help

Vis hjælpeteksten og afslut.

--usage

Vis en kort brugsbesked og afslut.

-V , --version

Vis versionsinformation og afslut.

De følgende tilvalg er kun gælden når der oprettes grafik:
-t
, --time-based

Brugstid (frem for antallet af funktionskald) som skala for x-aksen.

-T , --total

Tegn også en graf over den samlede brug af hukommelse.

--title= navn

Use navn som grafens titel.

-x størrelse , --x-size= størrelse

Gør grafen størrelse billedpunkter bred.

-y størrelse , --y-size= størrelse

Gør grafen størrelse billedpunkter høj.

AFSLUT-STATUS

Afslutningsstatus for memusage svarer til afslutningsstatus for det profilerede program.

FEJL

For at rapportere fejl, se http://www.gnu.org/software/libc/bugs.html

EKSEMPLER

Nedenfor er et simpelt program, der reallokerer en hukommelsesblok i cyklusser, der stiger til et toppunkt før cyklist reallokering af hukommelsen i mindre blokke, der returnerer til nul. Efter kompilering af programmet og afvikling af de følgende kommandoer kan en graf over hukommelsesforbruget findes i filen 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

Programkilde

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

SE OGSÅ

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

OVERSÆTTELSE

Oversættere af denne manual til dansk Joe Hansen <joedalton2@yahoo.dk>

Denne oversættelse er gratis dokumentation; læs GNU General Public License version 3 eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR.

Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til debian-l10n-danish@lists.debian.org .