Purpose
Enable or
disable pthread library resource collection, and retrieve resource
information for any pthread in the current process.
Library
Threads Library
(libpthreads.a)
Syntax
#include <pthread.h>
int pthread_getrusage_np (Ptid, RUsage, Mode)
pthread_t Ptid;
struct rusage *RUsage;
int Mode;
Description
The pthread_getrusage_np subroutine
enables and disables resource collection in the pthread library and
collects resource information for any pthread in the current process.
When compiled in 64-bit mode, resource usage (rusage) counters are
64-bits for the calling thread. When compiled in 32-bit mode, rusage
counters are 32-bits for the calling pthread.
This functionality
is enabled by default. The previous AIXTHREAD_ENRUSG used with pthread_getrusage_np is
no longer supported.
Parameters
Item |
Description |
Ptid |
Specifies the target thread. Must be within the current process. |
RUsage |
Points to a buffer described in the /usr/include/sys/resource.h file.
The fields are defined as follows: - ru_utime
- The total amount of time running in user mode.
- ru_stime
- The total amount of time spent in the system executing on behalf
of the processes.
- ru_maxrss
- The maximum size, in kilobytes, of the used resident set size.
- ru_ixrss
- 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 X seconds-of-execution and
is calculated by adding the number of shared memory pages in use each
time the internal system clock ticks, and then averaging over one-second
intervals.
- ru_idrss
- An integral value of the amount of unshared memory in the data
segment of a process, which is expressed in units of kilobytes X seconds-of-execution.
- ru_minflt
- The number of page faults serviced without any I/O activity. In
this case, 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 that a process was swapped out of main memory.
- ru_inblock
- The number of times that the file system performed input.
- ru_oublock
- The number of times that the file system performed output.
Note: The
numbers that the ru_inblock and ru_oublock fields
display account for real I/O only; data supplied by the caching
mechanism is charged only to the first process that reads or writes
the data.
- 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 because a process
voluntarily gave up the processor before its time slice was completed.
This usually occurs while the process waits for a resource to become
available.
- ru_nivcsw
- The number of times a context switch resulted because a higher
priority process ran or because the current process exceeded its
time slice.
|
Mode |
Indicates which task the subroutine should perform.
Acceptable values are as follows: - PTHRDSINFO_RUSAGE_START
- Returns the current resource utilization, which will be the start
measurement.
- PTHRDSINFO_RUSAGE_STOP
- Returns total current resource utilization since the last time
a PTHRDSINFO_RUSAGE_START was performed. If the task PTHRDSINFO_RUSAGE_START was
not performed, then the resource information returned is the accumulated
value since the start of the pthread.
- PTHRDSINFO_RUSAGE_COLLECT
- Collects resource information for the target thread. If the task PTHRDSINFO_RUSAGE_START was
not performed, then the resource information returned is the accumulated
value since the start of the pthread.
|
Return Values
Upon
successful completion, the pthread_getrusage_np subroutine
returns a value of 0. Otherwise, an error number is returned to indicate
the error.
Error Codes
The
pthread_getrusage_np subroutine
fails if one of the following is true:
Item |
Description |
EINVAL |
The address specified for RUsage is NULL, not valid,
or a null value for Ptid was given. |
ESRCH |
Either no thread could be found corresponding to the ID thread
of the Ptid thread or the thread corresponding to the Ptid thread
ID was not in the current process. |