getrusage(2) System Calls Manual getrusage(2)

getrusage - obține informații despre utilizarea resurselor

Biblioteca C standard (libc, -lc)

#include <sys/resource.h>
int getrusage(int who, struct rusage *usage);

getrusage() returnează măsurile de utilizare a resurselor pentru who, care pot fi una dintre următoarele:

Returnează statisticile de utilizare a resurselor pentru procesul apelant, care reprezintă suma resurselor utilizate de toate firele din proces.
Returnează statistici privind utilizarea resurselor pentru toți copiii procesului apelant care s-au încheiat și au fost așteptați. Aceste statistici vor include resursele utilizate de nepoți și de descendenții îndepărtați ulterior, în cazul în care toți descendenții care au intervenit și-au așteptat copiii care s-au încheiat.
Returnează statisticile de utilizare a resurselor pentru firul apelant. Macrocomanda de testare a caracteristicii _GNU_SOURCE trebuie definit (înainte de includerea fișierului de antet any) pentru a obține definiția acestei constante din <sys/resource.h>.

Utilizările resurselor sunt returnate în structura indicată de usage, care are următoarea formă:


struct rusage {
    struct timeval ru_utime; /* timpul CPU utilizat de utilizator */
    struct timeval ru_stime; /* timpul CPU utilizat de sistem */
    long   ru_maxrss;        /* dimensiunea maximă a setului rezident */
    long   ru_ixrss;         /* dimensiunea integrală a memoriei partajate */
    long   ru_idrss;         /* dimensiunea integrală a memoriei nepartajate */
    long   ru_isrss;         /* dimensiune integrală a stivei nepartajate */
    long   ru_minflt;        /* revendicări de pagină (defecte de pagină ușoare) */
    long   ru_majflt;        /* defecte de pagină (defecte de pagină grave) */
    long   ru_nswap;         /* swaps */
    long   ru_inblock;       /* operații de intrare în bloc */
    long   ru_oublock;       /* operații de ieșire în blocs */
    long   ru_msgsnd;        /* mesaje IPC trimise */
    long   ru_msgrcv;        /* mesaje IPC primite */
    long   ru_nsignals;      /* semnale primite */
    long   ru_nvcsw;         /* schimbări voluntare de context */
    long   ru_nivcsw;        /* schimbări involuntare de context */
};

Nu toate câmpurile sunt completate; câmpurile neîntreținute sunt puse la zero de către nucleu; (câmpurile neîntreținute sunt furnizate pentru compatibilitate cu alte sisteme și pentru că într-o zi ar putea fi acceptate pe Linux). Câmpurile sunt interpretate după cum urmează:

Aceasta este cantitatea totală de timp petrecută executând în modul utilizator, exprimată într-o structură timeval (secunde plus microsecunde).
Aceasta este cantitatea totală de timp petrecută executând în modul nucleu, exprimată într-o structură timeval (secunde plus microsecunde).
Aceasta este dimensiunea maximă a setului rezident utilizat (în kiloocteți). Pentru RUSAGE_CHILDREN, aceasta este dimensiunea setului rezident al celui mai mare copil, nu dimensiunea maximă a setului rezident al arborelui de procese.
Acest câmp este în prezent neutilizat pe Linux.
Acest câmp este în prezent neutilizat pe Linux.
Acest câmp este în prezent neutilizat pe Linux.
Numărul de erori de pagină rezolvate fără nicio activitate de In/Ieș; în acest caz, activitatea de In/Ieș este evitată prin „recuperarea” unui cadru de pagină din lista de pagini care așteaptă realocarea.
Numărul de erori de pagină deservite care au necesitat activitate In/Ieș.
Acest câmp este în prezent neutilizat pe Linux.
Numărul de ori în care sistemul de fișiere a trebuit să efectueze o intrare.
Numărul de ori în care sistemul de fișiere a trebuit să efectueze o ieșire.
Acest câmp este în prezent neutilizat pe Linux.
Acest câmp este în prezent neutilizat pe Linux.
Acest câmp este în prezent neutilizat pe Linux.
Numărul de ori în care a avut loc o schimbare de context ca urmare a faptului că un proces a renunțat în mod voluntar la procesor înainte de finalizarea tranșei sale de timp (de obicei pentru a aștepta disponibilitatea unei resurse).
Numărul de ori în care a avut loc o schimbare de context ca urmare a faptului că un proces cu prioritate mai mare a devenit executabil sau pentru că procesul curent și-a depășit intervalul de timp.

În caz de succes, se returnează zero. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

usage indică în afara spațiului de adrese accesibil.
who nu este valid.

Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

Interfață Atribut Valoare
getrusage() Siguranța firelor MT-Safe

POSIX.1-2008.

POSIX.1 specifică getrusage(), dar specifică numai câmpurile ru_utime și ru_stime.

RUSAGE_THREAD este specific Linux.

POSIX.1-2001, SVr4, 4.3BSD.

Înainte de Linux 2.6.9, dacă dispoziția SIGCHLD este stabilită la SIG_IGN, atunci utilizările de resurse ale proceselor copil sunt incluse automat în valoarea returnată de RUSAGE_CHILDREN, deși POSIX.1-2001 interzice explicit acest lucru. Această neconformitate este rectificată în Linux 2.6.9 și versiunile ulterioare.

Definiția structurii prezentată la începutul acestei pagini a fost preluată din 4.3BSD Reno.

Sistemele vechi ofereau o funcție vtimes() cu un scop similar cu getrusage(). Pentru retrocompatibilitate, glibc (până la Linux 2.32) furnizează, de asemenea, vtimes(). Toate aplicațiile noi ar trebui să fie scrise folosind getrusage(); (începând cu Linux 2.33, glibc nu mai furnizează o implementare vtimes()).

Măsurătorile de utilizare a resurselor sunt păstrate pe parcursul unui execve(2).

clock_gettime(2), getrlimit(2), times(2), wait(2), wait4(2), clock(3), proc_pid_stat(5), proc_pid_io(5)

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

17 mai 2025 Pagini de manual de Linux 6.15