GETRUSAGE(2) BSD Programmer's Manual GETRUSAGE(2) NNAAMMEE ggeettrruussaaggee - get information about resource utilization SSYYNNOOPPSSIISS ##iinncclluuddee <<ssyyss//ttiimmee..hh>> ##iinncclluuddee <<ssyyss//rreessoouurrccee..hh>> ##ddeeffiinnee RRUUSSAAGGEE__SSEELLFF 00 ##ddeeffiinnee RRUUSSAAGGEE__CCHHIILLDDRREENN --11 _i_n_t ggeettrruussaaggee(_i_n_t _w_h_o, _s_t_r_u_c_t _r_u_s_a_g_e _*_r_u_s_a_g_e); DDEESSCCRRIIPPTTIIOONN GGeettrruussaaggee() returns information describing the resources utilized by the current process, or all its terminated child processes. The _w_h_o parame- ter is either RUSAGE_SELF or RUSAGE_CHILDREN. The buffer to which _r_u_s_a_g_e 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; /* integral 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: _r_u___u_t_i_m_e the total amount of time spent executing in user mode. _r_u___s_t_i_m_e the total amount of time spent in the system executing on behalf of the process(es). _r_u___m_a_x_r_s_s the maximum resident set size utilized (in kilobytes). _r_u___i_x_r_s_s 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. _r_u___i_d_r_s_s 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). _r_u___i_s_r_s_s 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). _r_u___m_i_n_f_l_t 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. _r_u___m_a_j_f_l_t the number of page faults serviced that required I/O activi- ty. _r_u___n_s_w_a_p the number of times a process was swapped out of main memo- ry. _r_u___i_n_b_l_o_c_k the number of times the file system had to perform input. _r_u___o_u_b_l_o_c_k the number of times the file system had to perform output. _r_u___m_s_g_s_n_d the number of IPC messages sent. _r_u___m_s_g_r_c_v the number of IPC messages received. _r_u___n_s_i_g_n_a_l_s the number of signals delivered. _r_u___n_v_c_s_w the number of times a context switch resulted due to a pro- cess voluntarily giving up the processor before its time slice was completed (usually to await availability of a re- source). _r_u___n_i_v_c_s_w the number of times a context switch resulted due to a high- er priority process becoming runnable or because the current process exceeded its time slice. NNOOTTEESS The numbers _r_u___i_n_b_l_o_c_k and _r_u___o_u_b_l_o_c_k 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. EERRRROORRSS GGeettrruussaaggee() returns -1 on error. The possible errors are: [EINVAL] The _w_h_o parameter is not a valid value. [EFAULT] The address specified by the _r_u_s_a_g_e parameter is not in a valid part of the process address space. SSEEEE AALLSSOO gettimeofday(2), wait(2) BBUUGGSS There is no way to obtain information about a child process that has not yet terminated. HHIISSTTOORRYY The ggeettrruussaaggee function call appeared in 4.2BSD. 4th Berkeley Distribution June 4, 1993 2