InglesPransesEspanyol

Ad


OnWorks favicon

memusage - Online sa Cloud

Patakbuhin ang memusage sa OnWorks na libreng hosting provider sa Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

Ito ang command memusage na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

PROGRAMA:

NAME


memusage - paggamit ng memorya ng profile ng isang programa

SINOPSIS


memusage [opsyon] ... programa [programoption] ...

DESCRIPTION


memusage ay isang bash script na naglalarawan sa paggamit ng memorya ng programa, programa. Ito
preloads ang libmemusage.so library sa kapaligiran ng tumatawag (sa pamamagitan ng LD_PRELOAD
variable ng kapaligiran; tingnan mo ld.so(8)). Ang libmemusage.so sinusubaybayan ng library ang paglalaan ng memorya
sa pamamagitan ng pagharang ng mga tawag sa mallocNa (3), callocNa (3), libre(3), at realloc(3); opsyonal, mga tawag
sa mmapNa (2), mremap(2), at munmap(2) maaari ding ma-intercept.

memusage maaaring i-output ang mga nakolektang data sa textual form, o maaari itong gamitin memusagestat(1) (tingnan
ang -p opsyon, sa ibaba) upang lumikha ng PNG file na naglalaman ng graphical na representasyon ng
nakalap na datos.

Memorya paggamit buod
Ang output ng linyang "Buod ng paggamit ng memory" ni memusage naglalaman ng tatlong field:

magbunton total
Kabuuan ng laki argumento ng lahat malloc(3) mga tawag, produkto ng mga argumento
(nmemb*laki) sa lahat calloc(3) mga tawag, at kabuuan ng haba argumento ng lahat mmap(2)
mga tawag. Sa kaso ng realloc(3) at mremap(2), kung ang bagong sukat ng isang
mas malaki ang alokasyon kaysa sa naunang sukat, ang kabuuan ng lahat ng gayong pagkakaiba
(bagong laki minus lumang sukat) ay idinagdag.

magbunton rurok
Maximum sa lahat laki mga argumento ng malloc(3), lahat ng produkto ng nmemb*laki of
calloc(3), lahat laki mga argumento ng reallocNa (3), haba mga argumento ng mmap(2), at
bagong_laki mga argumento ng mremapNa (2).

magtalaksan rurok
Bago ang unang tawag sa anumang sinusubaybayang function, ang stack pointer address
(base stack pointer) ay nai-save. Pagkatapos ng bawat function na tawag, ang aktwal na stack
nabasa ang address ng pointer at ang pagkakaiba mula sa base stack pointer
nakalkula. Ang maximum ng mga pagkakaibang ito ay ang stack peak.

Kaagad na sumusunod sa linya ng buod na ito, ipinapakita ng isang talahanayan ang mga tawag sa numero, kabuuang memorya
inilaan o na-deallocate, at bilang ng mga nabigong tawag para sa bawat naharang na function. Para sa
realloc(3) at mremap(2), ang karagdagang patlang na "nomove" ay nagpapakita ng mga muling lokasyong nagbago
ang address ng isang bloke, at ang karagdagang field na "dec" ay nagpapakita ng mga muling lokasyon na bumaba
ang laki ng bloke. Para sa realloc(3), ang karagdagang field na "libre" ay nagpapakita ng mga relokasyon
na naging dahilan upang mapalaya ang isang bloke (ibig sabihin, 0 ang muling inilalaang laki).

Ang "realloc/kabuuang memory" ng talahanayan na output ni memusage hindi sumasalamin sa mga kaso kung saan
realloc(3) ay ginagamit upang muling italaga ang isang bloke ng memorya upang magkaroon ng mas maliit na sukat kaysa dati.
Ito ay maaaring maging sanhi ng kabuuan ng lahat ng "kabuuang memorya" na mga cell (hindi kasama ang "libre") na maging mas malaki kaysa sa
"libre/kabuuang memorya" na cell.

Histogram para harangan ang sukat
Ang "Histogram para sa mga laki ng bloke" ay nagbibigay ng isang breakdown ng mga paglalaan ng memory sa iba't-ibang
mga laki ng balde.

Opsyon


-n pangalan, --progname=pangalan
Pangalan ng program file sa profile.

-p file, --png=file
Bumuo ng PNG graphic at iimbak ito sa file.

-d file, --data=file
Bumuo ng binary data file at iimbak ito file.

-u, --unbuffered
Huwag buffer output.

-b laki, --buffer=laki
Kolektahin laki mga entry bago isulat ang mga ito.

--walang timer
Huwag paganahin ang batay sa timer (SIGPROF) sampling ng stack pointer value.

-m, --mmap
Bakas din mmapNa (2), mremap(2), at munmapNa (2).

-?, - Tumulong
Mag-print ng tulong at lumabas.

--gamit
Mag-print ng maikling mensahe sa paggamit at lumabas.

-V, --bersyon
I-print ang impormasyon ng bersyon at lumabas.

Ang mga sumusunod na opsyon ay nalalapat lamang kapag bumubuo ng graphical na output:

-t, --batay sa oras
Gamitin ang oras (sa halip na bilang ng mga function na tawag) bilang sukat para sa X axis.

-T, --kabuuan
Gumuhit din ng graph ng kabuuang paggamit ng memorya.

--title=pangalan
paggamit pangalan bilang pamagat ng graph.

-x laki, --x-laki=laki
Gawin ang graph laki mga pixel ang lapad.

-y laki, --y-laki=laki
Gawin ang graph laki mga pixel na mataas.

EXIT STATUS


Ang exit status ay katumbas ng exit status ng profiled program.

Halimbawa


Nasa ibaba ang isang simpleng programa na muling naglalaan ng isang bloke ng memorya sa mga cycle na umabot sa pinakamataas
bago pagkatapos ay cyclically relocating ang memory sa mas maliit na mga bloke na bumalik sa zero.
Matapos i-compile ang programa at patakbuhin ang mga sumusunod na command, isang graph ng memorya
ang paggamit ng program ay matatagpuan sa file memusage.png:

$ memusage --data=memusage.dat ./a.out
...
Buod ng paggamit ng memorya: kabuuang heap: 45200, heap peak: 6440, stack peak: 224
kabuuang mga tawag kabuuang memorya ng mga nabigong tawag
malloc| 1 400 0
realloc| 40 44800 0 (nomove:40, Disyembre:19, libre:0)
calloc| 0 0 0
libre| 1 440
Histogram para sa mga laki ng bloke:
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

Programa pinagmulan
# isama
# isama

#define CYCLES 20

int
main(int argc, char *argv[])
{
int i, j;
int *p;

printf("malloc: %zd\n", sizeof(int) * 100);
p = malloc(sizeof(int) * 100);

para sa (i = 0; i < CYCLES; i++) {
kung (i < CYCLES / 2)
j = i;
iba
j--;

printf("realloc: %zd\n", sizeof(int) * (j * 50 + 110));
p = realloc(p, sizeof(int) * (j * 50 + 100));

printf("realloc: %zd\n", sizeof(int) * ((j+1) * 150 + 110));
p = realloc(p, sizeof(int) * ((j + 1) * 150 + 110));
}

libre(p);
exit(EXIT_SUCCESS);
}

Gumamit ng memusage online gamit ang mga serbisyo ng onworks.net


Mga Libreng Server at Workstation

Mag-download ng Windows at Linux apps

Linux command

Ad