.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2013, Peter Schiffer .\" and Copyright (C) 2014, Michael Kerrisk .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH memusage 1 "31 octombrie 2023" "Pagini de manual de Linux 6.06" .SH NUME memusage \- profilul utilizării memoriei de către un program .SH REZUMAT .nf \fBmemusage\fP [\fIopțiune\fP]... \fIprogram\fP [\fIopțiune\-program\fP]... .fi .SH DESCRIERE \fBmemusage\fP este un script bash care face profilul utilizării memoriei programului \fIprogram\fP. Acesta preîncarcă biblioteca \fBlibmemusage.so\fP în mediul apelantului (prin intermediul variabilei de mediu \fBLD_PRELOAD\fP; a se vedea \fBld.so\fP(8)). Biblioteca \fBlibmemusage.so\fP urmărește alocarea memoriei prin interceptarea apelurilor la \fBmalloc\fP(3), \fBcalloc\fP(3), \fBfree\fP(3) și \fBrealloc\fP(3); opțional, pot fi interceptate și apelurile la \fBmmap\fP(2), \fBmremap\fP(2) și \fBmunmap\fP(2). .P \fBmemusage\fP poate afișa datele colectate sub formă de text sau poate utiliza \fBmemusagestat\fP(1) (a se vedea opțiunea \fB\-p\fP, mai jos) pentru a crea un fișier PNG care conține o reprezentare grafică a datelor colectate. .SS "Rezumatul utilizării memoriei" Linia „Memory usage summary” produsă de \fBmemusage\fP conține trei câmpuri: .RS 4 .TP \fBheap total\fP Suma argumentelor \fIdimensiune\fP din toate apelurile \fBmalloc\fP(3), produsul argumentelor (\fInmemb\fP*\fIdimensiune\fP) din toate apelurile \fBcalloc\fP(3) și suma argumentelor \fIlungime\fP din toate apelurile \fBmmap\fP(2). În cazul apelurilor \fBrealloc\fP(3) și \fBmremap\fP(2), în cazul în care noua dimensiune a unei alocări este mai mare decât dimensiunea anterioară, se adaugă suma tuturor acestor diferențe (noua dimensiune minus vechea dimensiune). .TP \fBheap peak\fP Maximul tuturor argumentelor \fIdimensiune\fP din \fBmalloc\fP(3), al tuturor produselor \fInmemb\fP*\fIdimensiune\fP din \fBcalloc\fP(3), al tuturor argumentelor \fIdimensiune\fP din \fBrealloc\fP(3), al argumentelor \fIlungime\fP din \fBmmap\fP(2) și al argumentelor \fIdimensiunea_nouă\fP din \fBmremap\fP(2). .TP \fBstack peak\fP Înainte de primul apel la orice funcție monitorizată, se salvează adresa indicatorului de stivă (indicatorul stivei de bază). După fiecare apel de funcție, se citește adresa reală a indicatorului de stivă și se calculează diferența față de indicatorul de bază al stivei. Valoarea maximă a acestor diferențe reprezintă apoi vârful stivei. .RE .P Imediat după această linie de rezumat, un tabel prezintă numărul de apeluri, memoria totală alocată sau eliberată și numărul de apeluri eșuate pentru fiecare funcție interceptată. Pentru \fBrealloc\fP(3) și \fBmremap\fP(2), câmpul suplimentar „nomove” arată realocările care au schimbat adresa unui bloc, iar câmpul suplimentar „dec” arată realocările care au scăzut dimensiunea blocului. Pentru \fBrealloc\fP(3), câmpul suplimentar „free” indică realocările care au dus la eliberarea unui bloc (adică dimensiunea realocată a fost 0). .P Coloana „realloc/total memory” din tabelul generat de \fBmemusage\fP nu reflectă cazurile în care \fBrealloc\fP(3) este utilizat pentru a realoca un bloc de memorie pentru a avea o dimensiune mai mică decât cea anterioară. Acest lucru poate face ca suma tuturor celulelor „total memory” (cu excepția celulei „free”) să fie mai mare decât cea a celulei „free/total memory”. .SS "Histograma pentru dimensiunile blocurilor" „Histogram for block sizes” oferă o defalcare a alocărilor de memorie în pachete de diferite dimensiuni. .SH OPȚIUNI .TP \fB\-n\ \fP\fInume\fP,\ \fB\-\-progname=\fP\fInume\fP Numele fișierului de program de profilat. .TP \fB\-p\ \fP\fIfișier\fP,\ \fB\-\-png=\fP\fIfișier\fP Generează un grafic PNG și îl stochează în \fIfișier\fP. .TP \fB\-d\ \fP\fIfișier\fP,\ \fB\-\-data=\fP\fIfișier\fP Generează un fișier de date binare și îl stochează în \fIfișier\fP. .TP \fB\-u\fP,\ \fB\-\-unbuffered\fP Fără memorie tampon la ieșire. .TP \fB\-b\ \fP\fIdimensiune\fP,\ \fB\-\-buffer=\fP\fIdimensiune\fP Colectează intrările \fIdimensiune\fP înainte de a le scrie. .TP \fB\-\-no\-timer\fP Dezactivează eșantionarea pe bază de temporizator (\fBSIGPROF\fP) a valorii indicatorului de stivă. .TP \fB\-m\fP,\ \fB\-\-mmap\fP De asemenea, urmărește \fBmmap\fP(2), \fBmremap\fP(2) și \fBmunmap\fP(2). .TP \fB\-?\fP,\ \fB\-\-help\fP Afișează mesajul de ajutor și iese. .TP \fB\-\-usage\fP Imprimă un mesaj scurt de utilizare și iese. .TP \fB\-V\fP,\ \fB\-\-version\fP Imprimă informațiile de versiune și iese .TP Următoarele opțiuni se aplică numai atunci când se generează o ieșire grafică: .TP \fB\-t\fP,\ \fB\-\-time\-based\fP Utilizează timpul (mai degrabă decât numărul de apeluri de funcții) ca scală pentru axa X. .TP \fB\-T\fP,\ \fB\-\-total\fP Desenează, de asemenea, un grafic al utilizării totale a memoriei. .TP \fB\-\-title=\fP\fInume\fP Utilizează \fInume\fP ca titlu în interiorul graficului. .TP \fB\-x\ \fP\fIdimensiunea\fP,\ \fB\-\-x\-size=\fP\fIdimensiunea\fP Face ca graficul să aibă o lățime de \fIdimensiunea\fP pixeli. .TP \fB\-y\ \fP\fIdimensiunea\fP,\ \fB\-\-y\-size=\fP\fIdimensiunea\fP Face ca graficul să aibă o înălțime de \fIdimensiunea\fP pixeli. .SH "STARE DE IEȘIRE" Starea de ieșire a \fBmemusage\fP este egală cu starea de ieșire a programului profilat. .SH ERORI Pentru a raporta erori, consultați .UR http://www.gnu.org/software/libc/bugs.html .UE . .SH EXEMPLE Mai jos este prezentat un program simplu care realocă un bloc de memorie în cicluri care cresc până la un vârf înainte de a realoca ciclic memoria în blocuri mai mici care revin la zero. După compilarea programului și rularea următoarelor comenzi, în fișierul \fImemusage.png\fP se poate găsi un grafic al utilizării memoriei programului: .P .in +4n .EX $ \fBmemusage \-\-data=memusage.dat ./a.out\fP \&... 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% ================ $ \fBmemusagestat memusage.dat memusage.png\fP .EE .in .SS "Sursa programului" .EX #include #include \& #define CYCLES 20 \& int main(int argc, char *argv[]) { int i, j; size_t size; int *p; \& size = sizeof(*p) * 100; printf("malloc: %zu\en", 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\en", size); p = realloc(p, size); \& size = sizeof(*p) * ((j + 1) * 150 + 110); printf("realloc: %zu\en", size); p = realloc(p, size); } \& free(p); exit(EXIT_SUCCESS); } .EE .SH "CONSULTAȚI ȘI" \fBmemusagestat\fP(1), \fBmtrace\fP(1), \fBld.so\fP(8) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .