f742a317e6
Reviewed by: bde MFC after: 1 week
187 lines
6.0 KiB
Groff
187 lines
6.0 KiB
Groff
.\" Copyright (c) 1985, 1991, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)getrusage.2 8.1 (Berkeley) 6/4/93
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd May 1, 2010
|
|
.Dt GETRUSAGE 2
|
|
.Os
|
|
.Sh NAME
|
|
.Nm getrusage
|
|
.Nd get information about resource utilization
|
|
.Sh LIBRARY
|
|
.Lb libc
|
|
.Sh SYNOPSIS
|
|
.In sys/types.h
|
|
.In sys/time.h
|
|
.In sys/resource.h
|
|
.Fd "#define RUSAGE_SELF 0"
|
|
.Fd "#define RUSAGE_CHILDREN -1"
|
|
.Fd "#define RUSAGE_THREAD 1"
|
|
.Ft int
|
|
.Fn getrusage "int who" "struct rusage *rusage"
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Fn getrusage
|
|
system call
|
|
returns information describing the resources utilized by the current
|
|
thread, the current process, or all its terminated child processes.
|
|
The
|
|
.Fa who
|
|
argument is either
|
|
.Dv RUSAGE_THREAD ,
|
|
.Dv RUSAGE_SELF ,
|
|
or
|
|
.Dv RUSAGE_CHILDREN .
|
|
The buffer to which
|
|
.Fa rusage
|
|
points will be filled in with
|
|
the following structure:
|
|
.Bd -literal
|
|
struct rusage {
|
|
struct timeval ru_utime; /* user time used */
|
|
struct timeval ru_stime; /* system time used */
|
|
long ru_maxrss; /* 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 */
|
|
};
|
|
.Ed
|
|
.Pp
|
|
The fields are interpreted as follows:
|
|
.Bl -tag -width ru_minfltaa
|
|
.It Fa ru_utime
|
|
the total amount of time spent executing in user mode.
|
|
.It Fa ru_stime
|
|
the total amount of time spent in the system executing on behalf
|
|
of the process(es).
|
|
.It Fa ru_maxrss
|
|
the maximum resident set size utilized (in kilobytes).
|
|
.It Fa ru_ixrss
|
|
an
|
|
.Dq 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.
|
|
Ticks are statistics clock ticks.
|
|
The statistics clock has a frequency of
|
|
.Fn sysconf _SC_CLK_TCK
|
|
ticks per second.
|
|
.It Fa 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).
|
|
.It Fa 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).
|
|
.It Fa ru_minflt
|
|
the number of page faults serviced without any I/O activity; here
|
|
I/O activity is avoided by
|
|
.Dq reclaiming
|
|
a page frame from
|
|
the list of pages awaiting reallocation.
|
|
.It Fa ru_majflt
|
|
the number of page faults serviced that required I/O activity.
|
|
.It Fa ru_nswap
|
|
the number of times a process was
|
|
.Dq swapped
|
|
out of main
|
|
memory.
|
|
.It Fa ru_inblock
|
|
the number of times the file system had to perform input.
|
|
.It Fa ru_oublock
|
|
the number of times the file system had to perform output.
|
|
.It Fa ru_msgsnd
|
|
the number of IPC messages sent.
|
|
.It Fa ru_msgrcv
|
|
the number of IPC messages received.
|
|
.It Fa ru_nsignals
|
|
the number of signals delivered.
|
|
.It Fa 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).
|
|
.It Fa 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.
|
|
.El
|
|
.Sh NOTES
|
|
The numbers
|
|
.Fa ru_inblock
|
|
and
|
|
.Fa 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.
|
|
.Sh RETURN VALUES
|
|
.Rv -std getrusage
|
|
.Sh ERRORS
|
|
The
|
|
.Fn getrusage
|
|
system call will fail if:
|
|
.Bl -tag -width Er
|
|
.It Bq Er EINVAL
|
|
The
|
|
.Fa who
|
|
argument is not a valid value.
|
|
.It Bq Er EFAULT
|
|
The address specified by the
|
|
.Fa rusage
|
|
argument is not in a valid part of the process address space.
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr gettimeofday 2 ,
|
|
.Xr wait 2 ,
|
|
.Xr clocks 7
|
|
.Sh HISTORY
|
|
The
|
|
.Fn getrusage
|
|
system call appeared in
|
|
.Bx 4.2 .
|
|
The
|
|
.Dv RUSAGE_THREAD
|
|
facility first appeared in
|
|
.Fx 8.1 .
|
|
.Sh BUGS
|
|
There is no way to obtain information about a child process
|
|
that has not yet terminated.
|