The function getrusage and the data type struct rusage
are used to examine the resource usage of a process. They are declared
in sys/resource.h.
int getrusage (int processes, struct rusage *rusage) ¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
This function reports resource usage totals for processes specified by
processes, storing the information in *rusage.
In most systems, processes has only two valid values:
RUSAGE_SELF ¶Just the current process.
RUSAGE_CHILDREN ¶All child processes (direct and indirect) that have already terminated.
The return value of getrusage is zero for success, and -1
for failure.
EINVALThe argument processes is not valid.
One way of getting resource usage for a particular child process is with
the function wait4, which returns totals for a child when it
terminates. See BSD Process Wait Function.
This data type stores various resource usage statistics. It has the following members, and possibly others:
struct timeval ru_utimeTime spent executing user instructions.
struct timeval ru_stimeTime spent in operating system code on behalf of processes.
long int ru_maxrssThe maximum resident set size used, in kilobytes. That is, the maximum number of kilobytes of physical memory that processes used simultaneously.
long int ru_ixrssAn integral value expressed in kilobytes times ticks of execution, which indicates the amount of memory used by text that was shared with other processes.
long int ru_idrssAn integral value expressed the same way, which is the amount of unshared memory used for data.
long int ru_isrssAn integral value expressed the same way, which is the amount of unshared memory used for stack space.
long int ru_minfltThe number of page faults which were serviced without requiring any I/O.
long int ru_majfltThe number of page faults which were serviced by doing I/O.
long int ru_nswapThe number of times processes was swapped entirely out of main memory.
long int ru_inblockThe number of times the file system had to read from the disk on behalf of processes.
long int ru_oublockThe number of times the file system had to write to the disk on behalf of processes.
long int ru_msgsndNumber of IPC messages sent.
long int ru_msgrcvNumber of IPC messages received.
long int ru_nsignalsNumber of signals received.
long int ru_nvcswThe number of times processes voluntarily invoked a context switch (usually to wait for some service).
long int ru_nivcswThe number of times an involuntary context switch took place (because a time slice expired, or another process of higher priority was scheduled).