The
getrusage()
system call
returns information describing the resources utilized by the current
thread, the current process, or all its terminated child processes.
The
who
argument is either
RUSAGE_THREAD,
RUSAGE_SELF,
or
RUSAGE_CHILDREN.
The buffer to which
rusage
points will be filled in with
the following structure:
struct rusage {
struct timeval ru_utime; /* user time used */
struct timeval ru_stime; /* system time used */
long ru_maxrss; /* max resident set size */
long ru_ixrss; /* integral shared text memory size */
long ru_idrss; /* integral unshared data size */
long ru_isrss; /* integral unshared stack size */
long ru_minflt; /* page reclaims */
long ru_majflt; /* page faults */
long ru_nswap; /* swaps */
long ru_inblock; /* block input operations */
long ru_oublock; /* block output operations */
long ru_msgsnd; /* messages sent */
long ru_msgrcv; /* messages received */
long ru_nsignals; /* signals received */
long ru_nvcsw; /* voluntary context switches */
long ru_nivcsw; /* involuntary context switches */
};
The fields are interpreted as follows:
ru_utime
|
|
the total amount of time spent executing in user mode.
|
ru_stime
|
|
the total amount of time spent in the system executing on behalf
of the process(es).
|
ru_maxrss
|
|
the maximum resident set size utilized (in kilobytes).
|
ru_ixrss
|
|
an
"integral"
value indicating the amount of memory used
by the text segment
that was also shared among other processes.
This value is expressed
in units of kilobytes * ticks-of-execution.
Ticks are statistics clock ticks.
The statistics clock has a frequency of
sysconf(_SC_CLK_TCK)
ticks per second.
|
ru_idrss
|
|
an integral value of the amount of unshared memory residing in the
data segment of a process (expressed in units of
kilobytes * ticks-of-execution).
|
ru_isrss
|
|
an integral value of the amount of unshared memory residing in the
stack segment of a process (expressed in units of
kilobytes * ticks-of-execution).
|
ru_minflt
|
|
the number of page faults serviced without any I/O activity; here
I/O activity is avoided by
"reclaiming"
a page frame from
the list of pages awaiting reallocation.
|
ru_majflt
|
|
the number of page faults serviced that required I/O activity.
|
ru_nswap
|
|
the number of times a process was
"swapped"
out of main
memory.
|
ru_inblock
|
|
the number of times the file system had to perform input.
|
ru_oublock
|
|
the number of times the file system had to perform output.
|
ru_msgsnd
|
|
the number of IPC messages sent.
|
ru_msgrcv
|
|
the number of IPC messages received.
|
ru_nsignals
|
|
the number of signals delivered.
|
ru_nvcsw
|
|
the number of times a context switch resulted due to a process
voluntarily giving up the processor before its time slice was
completed (usually to await availability of a resource).
|
ru_nivcsw
|
|
the number of times a context switch resulted due to a higher
priority process becoming runnable or because the current process
exceeded its time slice.
|