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

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). ┌──────────────────────────────────────────────────────────────┬────────────────────────┬───────────────┐ │ Interfejs │ Atrybut │ Wartość │ ├──────────────────────────────────────────────────────────────┼────────────────────────┼───────────────┤ │ 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)