GETRUSAGE
Section: System Calls (2)
Updated: April 3, 1987
Index
Return to Main Contents
NAME
getrusage - get information about resource utilization
SYNOPSIS
#include <sys/time.h>
#include <sys/resource.h>
#define RUSAGE_SELF 0 /* calling process */
#define RUSAGE_CHILDREN -1 /* terminated child processes */
getrusage(who, rusage)
int who;
struct rusage *rusage;
DESCRIPTION
Getrusage
returns information describing the resources utilized by the current
process, or all its terminated child processes.
The
who
parameter is one of 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 */
int ru_maxrss;
int ru_ixrss; /* integral shared text memory size */
int ru_idrss; /* integral unshared data size */
int ru_isrss; /* integral unshared stack size */
int ru_minflt; /* page reclaims */
int ru_majflt; /* page faults */
int ru_nswap; /* swaps */
int ru_inblock; /* block input operations */
int ru_oublock; /* block output operations */
int ru_msgsnd; /* messages sent */
int ru_msgrcv; /* messages received */
int ru_nsignals; /* signals received */
int ru_nvcsw; /* voluntary context switches */
int 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.
- 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.
NOTES
The numbers
ru_inblock
and
ru_oublock
account only for real
I/O; data supplied by the caching mechanism is charged only
to the first process to read or write the data.
ERRORS
The possible errors for
getrusage
are:
- [EINVAL]
-
The
who
parameter is not a valid value.
- [EFAULT]
-
The address specified by the
rusage
parameter is not in a valid part of the process address space.
SEE ALSO
gettimeofday(2), wait(2)
BUGS
There is no way to obtain information about a child process
that has not yet terminated.
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- NOTES
-
- ERRORS
-
- SEE ALSO
-
- BUGS
-
This document was created by
man2html,
using the manual pages.
Time: 04:51:40 GMT, January 31, 2023