MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Standard C Library Functions                        getrusage(3C)



NAME
     getrusage - get information about resource utilization

SYNOPSIS
     #include 

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


DESCRIPTION
     The getrusage() function provides measures of the  resources
     used  by  the current process, its terminated and waited-for
     child processes, or the current light weight process  (LWP).
     If the value of the who argument is RUSAGESELF, information
     is returned about resources used by the current process.  If
     the  value  of the who argument is RUSAGECHILDREN, informa-
     tion 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
     SANOCLDWAIT  set  or sets SIGCHLD to SIGIGN), the resource
     information for the  child  process  is  discarded  and  not
     included   in   the   resource   information   provided   by
     getrusage(). If the value of the who argument is RUSAGELWP,
     information  is returned about resources used by the current
     LWP.


     The rusage argument is a  pointer  to  an  object  of  type
     struct  rusage  in which the returned information is stored.
     The members of rusage are as follows:

       struct timeval  ruutime;     /* user time used */
       struct timeval  rustime;     /* system time used */
       long            rumaxrss;    /* maximum resident set size */
       long            ruidrss;     /* integral resident set size */
       long            ruminflt;    /* page faults not requiring physical
                                        I/O */
       long            rumajflt;    /* page faults requiring physical I/O */
       long            runswap;     /* swaps */
       long            ruinblock;   /* block input operations */
       long            ruoublock;   /* block output operations */
       long            rumsgsnd;    /* messages sent */
       long            rumsgrcv;    /* messages received */
       long            runsignals;  /* signals received */
       long            runvcsw;     /* voluntary context switches */
       long            runivcsw;    /* involuntary context switches */



     The structure members are interpreted as follows:





SunOS 5.11           Last change: 2 Jul 2004                    1






Standard C Library Functions                        getrusage(3C)



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


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


     rumaxrss      The maximum resident set size.  Size is given
                    in  pages  (the  size of a page, in bytes, is
                    given by the getpagesize(3C)  function).  See
                    the NOTES section of this page.


     ruidrss       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. It does not take
                    sharing into account. See the  NOTES  section
                    of this page.


     ruminflt      The number of page faults serviced which  did
                    not  require  any  physical I/O activity. See
                    the  NOTES section of this page.


     rumajflt      The number  of  page  faults  serviced  which
                    required  physical  I/O  activity. This could
                    include page ahead operations by the  kernel.
                    See the  NOTES section of this page.


     runswap       The number of times a process was swapped out
                    of main memory.


     ruinblock     The number of times the file  system  had  to
                    perform input in servicing a read(2) request.


     ruoublock     The number of times the file  system  had  to
                    perform   output   in  servicing  a  write(2)
                    request.


     rumsgsnd      The number of messages sent over sockets.




SunOS 5.11           Last change: 2 Jul 2004                    2






Standard C Library Functions                        getrusage(3C)



     rumsgrcv      The number of messages received from sockets.


     runsignals    The number of signals delivered.


     runvcsw       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).


     runivcsw      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
     Upon successful completion, getrusage()  returns  0.  Other-
     wise, -1 is returned and errno is set to indicate the error.

ERORS
     The  getrusage() function will fail if:

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


     EINVAL    The who parameter is not a valid value.


ATRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:



     
     ATRIBUTE TYPE               ATRIBUTE VALUE             
    
     Interface Stability          Standard                    
    


SEE ALSO
     sar(1M),  read(2),  times(2),   write(2),   getpagesize(3C),
     gettimeofday(3C), wait(3C), attributes(5), standards(5)





SunOS 5.11           Last change: 2 Jul 2004                    3






Standard C Library Functions                        getrusage(3C)



NOTES
     The rumaxrss, ruixrss, ruidrss, and ruisrss  members  of
     the rusage structure are set to 0 in this implementation.


     The numbers ruinblock and ruoublock account only for  real
     I/O,  and are approximate measures at best. Data supplied by
     the cache mechanism is charged only to the first process  to
     read and the last process to write the data.


     The way resident set size is calculated is an approximation,
     and could misrepresent the true resident set size.


     Page faults can be generated from a variety of  sources  and
     for  a  variety  of  reasons. The customary cause for a page
     fault is a direct reference by the program to a  page  which
     is  not  in  memory.   Now, however, the kernel can generate
     page faults on behalf of the user,  for  example,  servicing
     read(2)  and  write(2)  functions. Also, a page fault can be
     caused by an absent hardware translation  to  a  page,  even
     though the page is in physical memory.


     In addition to hardware detected page faults, the kernel may
     cause pseudo page faults in order to perform some housekeep-
     ing.  For example, the kernel may generate page faults, even
     if the pages exist in physical memory, in order to lock down
     pages involved in a raw I/O request.


     By definition, major page faults require physical I/O, while
     minor  page faults do not require physical I/O. For example,
     reclaiming the page from the free list would avoid  I/O  and
     generate  a  minor  page  fault.  More  commonly, minor page
     faults occur during process startup as references  to  pages
     which  are  already  in  memory.  For example, if an address
     space faults on some "hot"  executable  or  shared  library,
     this  results  in  a minor page fault for the address space.
     Also, any one doing a read(2) or write(2) to something  that
     is in the page cache will get a minor page fault(s) as well.


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









SunOS 5.11           Last change: 2 Jul 2004                    4



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™