Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

getrusage(2) [ultrix man page]

getrusage(2)							System Calls Manual						      getrusage(2)

Name
       getrusage - get information about resource utilization

Syntax
       #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
       The  system  call  returns information describing the resources utilized by the current process or all its terminated child processes.  The
       who parameter is one of RUSAGE_SELF and RUSAGE_CHILDREN.  If rusage is nonzero, the buffer it points to will be filled in with the  follow-
       ing 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 size */
	       int     ru_ismrss       /* integral shared 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 processes.

       ru_maxrss
	      The maximum resident set size utilized (in bytes).

       ru_ixrss
	      An  "integral"  value indicating the amount of text memory used that was also shared among other processes.  This value is expressed
	      in units of kilobytes * seconds-of-execution and is calculated by summing the number of shared memory pages in  use  each  time  the
	      internal system clock ticks and then averaging over 1-second intervals.

       ru_ismrss
	      An  integral  value of the amount of shared memory residing in the data segment of a process (expressed in units of kilobytes * sec-
	      onds-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 * sec-
	      onds-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 *
	      seconds-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 com-
	      pleted, 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.

       The  numbers  ru_inblock  and  ru_oublock  account only for real I/O.  Data supplied by the cacheing mechanism is charged only to the first
       process to read or write the data.

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

Diagnostics
       The call fails under the following conditions:

       [EINVAL]       The who parameter is not a valid value on RUSAGE_SELF or RUSAGE_CHILDREN.

       [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)

																      getrusage(2)
Man Page