DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

getrusage(S-osr5)


getrusage -- get information about resource utilization

Synopsis

   cc. . . -lc
   

#include <sys/time.h> #include <sys/resource.h>

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

Description

The getrusage function provides measures of the resources used by the current process or its terminated and waited-for child processes.

If the value of the who argument is RUSAGE_SELF, information is returned about resources used by the current process. If the value of the who argument is RUSAGE_CHILDREN, information is returned about resources used by the terminated and waited-for children of the current process. If the child is never waited for (for instance, if the parent has SA_NOCLDWAIT set or sets SIGCHLD to SIG_IGN), the resource information for the child process is discarded and not included in the resource information provided by getrusage.

The r_usage argument is a pointer to an object of type struct rusage in which the returned information is stored.

   struct  rusage {
           struct timeval ru_utime;        /* user time used */
           struct timeval ru_stime;        /* system time used */
           long    ru_maxrss;
   #define ru_first        ru_ixrss
           long    ru_ixrss;               /* XXX: 0 */
           long    ru_idrss;               /* XXX: sum of rm_asrss */
           long    ru_isrss;               /* XXX: 0 */
           long    ru_minflt;              /* any page faults not requiring I/O */
           long    ru_majflt;              /* any page faults requiring I/O */
           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 */
   #define ru_last         ru_nivcsw
   };

The fields are interpreted as follows:


ru_utime
The total amount of time spent executing in user mode. Time is given in seconds and microseconds.

ru_stime
The total amount of time spent executing in system mode. Time is given in seconds and microseconds.

ru_maxrss
The maximum resident set size. Size is given in pages (the size of a page, in bytes, is given by the getpagesize(S-osr5) system call).

ru_ixrss
Currently returns 0.


ru_idrss
An integral value indicating the amount of memory in use by a process while the process is running. This value is the sum of the resident set sizes of the process running when a clock tick occurs. The value is given in pages times clock ticks. Note: it does not take sharing into account.


ru_isrss
Currently returns 0.

ru_minflt
The number of page faults serviced which did not require any physical I/O activity.

ru_majflt
The number of page faults serviced which required physical I/O activity. This could include page ahead operations by the kernel.

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 in servicing a read(S-osr5) request.

ru_oublock
The number of times the file system had to perform output in servicing a write(S-osr5) request.

ru_msgsnd
The number of messages sent over sockets.

ru_msgrcv
The number of messages received from sockets.

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.

Return values

If successful, the r_usage structure is filled in and 0 is returned. If the call fails, a -1 is returned and errno is set to indicate the error.

Errors

getrusage will fail if:

EINVAL
The who argument is not a valid value.

EFAULT
The address specified by the rusage argument is not in a valid portion of the process's address space.

An invalid address for the r_usage argument may result in a core dump as opposed to returning EFAULT.

See also

exit(S-osr5), getrlimit(S-osr5), gettimeofday(S-osr5), read(S-osr5), sar(ADM), sigaction(S-osr5), time(S-osr5), times(S-osr5), wait(S-osr5), write(S-osr5)

Notices

Only the timeval fields of struct rusage are supported in this implementation.

There is no way to obtain information about a child process which has not yet terminated.

Standards conformance

This routine conforms to X/Open System Interfaces and Headers, Issue 4, Version 2.
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 -- 02 June 2005