getrusage(2)

NUME
getrusage - obține informații despre utilizarea resurselor

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <sys/resource.h>

int getrusage(int who, struct rusage *usage);

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

RUSAGE_SELF
    Returnează statisticile de utilizare a resurselor pentru procesul apelant, care reprezintă suma resurselor utilizate de toate firele din proces.

RUSAGE_CHILDREN
    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.

RUSAGE_THREAD (începând cu Linux 2.6.26)
    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ă:

ru_utime
    Aceasta este cantitatea totală de timp petrecută executând în modul utilizator, exprimată într-o structură timeval (secunde plus microsecunde).

ru_stime
    Aceasta este cantitatea totală de timp petrecută executând în modul nucleu, exprimată într-o structură timeval (secunde plus microsecunde).

ru_maxrss (începând cu Linux 2.6.32)
    Aceasta este dimensiunea maximă a setului rezident utilizat (în Kio). Pentru RUSAGE_CHILDREN, aceasta este dimensiunea setului rezident al celui mai mare copil, nu dimensiunea maximă a setului rezident al arborelui de procese.

ru_ixrss (nu este întreținut)
    Acest câmp este în prezent neutilizat pe Linux.

ru_idrss (nu este întreținut)
    Acest câmp este în prezent neutilizat pe Linux.

ru_isrss (nu este întreținut)
    Acest câmp este în prezent neutilizat pe Linux.

ru_minflt
    Numărul de erori de pagină rezolvate fără nicio activitate de In/Ieș; în acest caz, activitatea de In/Ieș este evitată prin „reclamarea” unui cadru de pagină din lista de pagini care așteaptă realocarea.

ru_majflt
    Numărul de erori de pagină deservite care au necesitat activitate In/Ieș.

ru_nswap (nu este întreținut)
    Acest câmp este în prezent neutilizat pe Linux.

ru_inblock (începând cu Linux 2.6.22)
    Numărul de ori în care sistemul de fișiere a trebuit să efectueze o intrare.

ru_oublock (începând cu Linux 2.6.22)
    Numărul de ori în care sistemul de fișiere a trebuit să efectueze o ieșire.

ru_msgsnd (nu este întreținut)
    Acest câmp este în prezent neutilizat pe Linux.

ru_msgrcv (nu este întreținut)
    Acest câmp este în prezent neutilizat pe Linux.

ru_nsignals (nu este întreținut)
    Acest câmp este în prezent neutilizat pe Linux.

ru_nvcsw (începând cu Linux 2.6)
    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).

ru_nivcsw (începând cu Linux 2.6)
    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.

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

ERORI-IEȘIRE

EFAULT
    usage indică în afara spațiului de adrese accesibil.

EINVAL
    who nu este valid.

ATRIBUTE
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

STANDARDE
POSIX.1-2024.

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

RUSAGE_THREAD este specific Linux.

ISTORIC
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()).

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

CONSULTAȚI ȘI
clock_gettime(2), getrlimit(2), times(2), wait(2), wait4(2), clock(3), proc_pid_stat(5), proc_pid_io(5)

TRADUCERE
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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.