Provided by: manpages-pl-dev_4.27.0-1_all bug

NAZWA

       getrusage - pobiera użycie zasobów

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <sys/resource.h>

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

OPIS

       getrusage() zwraca użycie zasobów zmierzone dla who, którym może być jeden z:

       RUSAGE_SELF
              Zwraca  statystyki użycia zasobów procesu wywołującego, czyli sumę zasobów użytych przez wszystkie
              wątki procesu.

       RUSAGE_CHILDREN
              Zwraca statystyki użycia zasobów przez wszystkie dzieci procesu wywołującego, które się zakończyły
              i na które się oczekuje. Statystyki te obejmą zasoby użyte przez wnuki i kolejne pokolenia,  jeśli
              wszystkie one oczekują na swoich zakończonych potomków.

       RUSAGE_THREAD (od Linuksa 2.6.26)
              Zwraca  statystyki  użycia  zasobów  przez  wątek  wywołujący.  Aby uzyskać definicję tej stałej z
              <sys/resource.h>  konieczne  jest  zdefiniowanie  makra  sprawdzania   cech   _GNU_SOURCE   (przed
              dołączeniem jakichkolwiek plików nagłówkowych).

       Użycie zasobów jest zwracane w strukturze, na którą wskazuje usage, w postaci:

           struct rusage {
               struct timeval ru_utime; /* użyty czas procesora użytkownika */
               struct timeval ru_stime; /* użyty czas procesora systemu */
               long   ru_maxrss;        /* maksymalny rozmiar zestawu rezydentnego */
               long   ru_ixrss;         /* całkowity rozmiar pamięci dzielonej */
               long   ru_idrss;         /* całkowity rozmiar niedzielonych danych */
               long   ru_isrss;         /* całkowity rozmiar niedzielonego stosu */
               long   ru_minflt;        /* odzyskane strony (pomniejsze chybienia) */
               long   ru_majflt;        /* chybienia stron (główne chybienia) */
               long   ru_nswap;         /* wymienione strony */
               long   ru_inblock;       /* blokowe operacje wejścia */
               long   ru_oublock;       /* blokowe operacje wyjścia */
               long   ru_msgsnd;        /* wysłane komunikaty IPC */
               long   ru_msgrcv;        /* otrzymane komunikaty IPC */
               long   ru_nsignals;      /* otrzymane sygnały */
               long   ru_nvcsw;         /* dobrowolne przełączenia kontekstu */
               long   ru_nivcsw;        /* przymusowe przełączenia kontekstu */
           };

       Nie   wszystkie  pola  są  ukończone;  pola  nieutrzymywane  są  ustawiane  na  zero  przez  jądro  (pola
       nieutrzymywane są zapewniane ze względu na kompatybilność z innymi systemami  i  ponieważ  w  przyszłości
       mogą być obsługiwane w Linuksie). Pola są interpretowane w następujący sposób:

       ru_utime
              Całkowity  czas  spędzony  na  wykonywaniu  w  trybie użytkownika, wyrażony jako struktura timeval
              (sekundy i mikrosekundy).

       ru_stime
              Całkowity czas spędzony na wykonywaniu w trybie jądra, wyrażony jako struktura timeval (sekundy  i
              mikrosekundy).

       ru_maxrss (od Linuksa 2.6.32)
              Szczytowy  osiągnięty  rozmiar  zestawu rezydentnego („resident set size” — RSS; w kilobajtach). W
              przypadku RUSAGE_CHILDREN, dotyczy to RSS największego potomka, a nie RSS całego drzewa procesów.

       ru_ixrss (nieutrzymywane)
              W Linuksie, pole to jest aktualnie nieużywane.

       ru_idrss (nieutrzymywane)
              W Linuksie, pole to jest aktualnie nieużywane.

       ru_isrss (nieutrzymywane)
              W Linuksie, pole to jest aktualnie nieużywane.

       ru_minflt
              Liczba chybień stron (page fault), obsłużonych bez aktywności wejścia/wyjścia; aktywność  ta  jest
              unikana dzięki „odzyskaniu” ramki strony z listy stron oczekujących na realokację.

       ru_majflt
              Liczba obsłużonych chybień stron, które wymagały aktywności wejścia/wyjścia.

       ru_nswap (nieutrzymywane)
              W Linuksie, pole to jest aktualnie nieużywane.

       ru_inblock (od Linuksa 2.6.22)
              Liczba przypadków, w których system plików musiał obsłużyć wejście.

       ru_oublock (od Linuksa 2.6.22)
              Liczba przypadków, w których system plików musiał obsłużyć wyjście.

       ru_msgsnd (nieutrzymywane)
              W Linuksie, pole to jest aktualnie nieużywane.

       ru_msgrcv (nieutrzymywane)
              W Linuksie, pole to jest aktualnie nieużywane.

       ru_nsignals (nieutrzymywane)
              W Linuksie, pole to jest aktualnie nieużywane.

       ru_nvcsw (od Linuksa 2.6)
              Liczba przypadków, w których wystąpiło przełączenie kontekstu, ze względu na dobrowolne zwolnienie
              procesora  przez  proces,  przed wykorzystaniem jego jednostki czasu (zwykłe w celu oczekiwania na
              dostępność zasobu).

       ru_nivcsw (od Linuksa 2.6)
              Liczba przypadków, w których wystąpiło  przełączenie  kontekstu,  ze  względu  na  pojawienie  się
              działającego  procesu o wyższym priorytecie lub ze względu na przekroczenie swojej jednostki czasu
              przez bieżący proces.

WARTOŚĆ ZWRACANA

       Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest -1  i  ustawiane  errno,  wskazując
       błąd.

BŁĘDY

       EFAULT usage wskazuje poza dostępną przestrzeń adresową.

       EINVAL who jest nieprawidłowe.

ATRYBUTY

       Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
       ┌──────────────────────────────────────────────────────────────┬────────────────────────┬───────────────┐
       │ InterfejsAtrybutWartość       │
       ├──────────────────────────────────────────────────────────────┼────────────────────────┼───────────────┤
       │ getrusage()                                                  │ Bezpieczeństwo wątkowe │ MT-bezpieczne │
       └──────────────────────────────────────────────────────────────┴────────────────────────┴───────────────┘

STANDARDY

       POSIX.1-2008.

       POSIX.1 określa getrusage(), lecz opisuje jedynie pola ru_utime i ru_stime.

       RUSAGE_THREAD jest typowo linuksowe.

HISTORIA

       POSIX.1-2001, SVr4, 4.3BSD.

       Przed  Linuksem  2.6.9,  jeśli  dyspozycję  SIGCHLD  ustawiono  na SIG_IGN, to w wartości zwracanej przez
       RUSAGE_CHILDREN,  automatycznie  uwzględniane  jest  użycie  zasobu  przez  procesy  potomne,   mimo   że
       POSIX.1-2001 wyraźnie tego zabrania. Tę niezgodność ze standardem usunięto w Linuksie 2.6.9 i nowszych.

       Definicję struktury pokazaną na początku niniejszego podręcznika zaczerpnięto z 4.3BSD Reno.

       Bardzo stare systemy udostępniały funkcję vtimes() o podobnym przeznaczeniu co getrusage(). Ze względu na
       kompatybilność, glibc (do Linuksa 2.32) również dostarczał vtimes(). Wszystkie nowe aplikacje powinny być
       pisane z wykorzystaniem getrusage() (od Linuksa 2.33, glibc nie udostępnia już implementacji vtimes()).

UWAGI

       Wskaźniki użycia zasobów są zachowywane przy execve(2).

ZOBACZ TAKŻE

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

TŁUMACZENIE

       Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją.  Bliższe informacje o warunkach licencji można uzyskać
       zapoznając  się  z  GNU General Public License w wersji 3  lub  nowszej.   Nie   przyjmuje   się   ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej manpages-pl-
       list@lists.sourceforge.net.

Linux man-pages 6.9.1                            2 maja 2024 r.                                     getrusage(2)