pthread_getrusage_np 子例程

用途

启用或禁用 pthread 库资源收集,并检索当前进程中任何 pthread 的资源信息。

线程库 (libpthreads.a)

语法

#include <pthread.h>

int pthread_getrusage_np (Ptid, RUsage, Mode)
pthread_t Ptid;
struct rusage *RUsage;
int Mode;

描述

pthread_getrusage_np 子例程在 pthread 库中启用和禁用资源收集,并收集当前进程中任何 pthread 的资源信息。 当以 64 位方式编译时,对于调用线程,资源使用 (rusage) 计数器是 64 位。 当以 32 位方式编译时,对于调用 pthread , rusage 计数器是 32 位。

缺省情况下,此功能处于启用状态。 不再支持先前与 pthread_getrusage_np 配合使用的 AIXTHREAD_ENRUSG

参数

描述
ptid 指定目标线程。 必须在当前进程中。
RUsage 指向 /usr/include/sys/resource.h 文件中描述的缓冲区。 字段定义如下:
ru_utime
在用户方式下运行的总时间量。
ru_stime
代表进程在系统中执行所花费的总时间。
ru_maxrss
已用驻留集大小的最大大小 (以千字节为单位)。
ru_ixrss
一个整数值,指示也在其他进程之间共享的文本段所使用的内存量。 此值以 千字节数 X 秒-执行 为单位表示,并通过在每次内部系统时钟信号时添加正在使用的共享内存页面数,然后在一秒时间间隔内求平均值来计算。
ru_idrss
进程数据段中非共享内存量的整数值,以 千字节 X 秒执行为单位表示。
ru_minflt
在没有任何 I/O 活动的情况下处理的缺页故障数。 在这种情况下,通过从等待重新分配的页面列表中回收页帧来避免 I/O 活动。
ru_majflt
需要 I/O 活动处理的缺页故障数。
ru_nswap
进程从主内存中换出的次数。
ru_inblock
文件系统执行输入的次数。
ru_oublock
文件系统执行输出的次数。
注:ru_inblockru_oublock字段仅显示实际 I/O 的帐户; 高速缓存机制提供的数据仅向读取或写入数据的第一个进程收费。
ru_msgsnd
发送的 IPC 消息数。
ru_msgrcv
接收到的 IPC 消息数。
ru_nsignals
传递的信号数。
ru_nvcsw
由于进程在其时间片完成之前自愿放弃处理器而导致上下文切换的次数。 当进程等待资源变为可用时,通常会发生此情况。
ru_nivcsw
由于更高优先级的进程运行或由于当前进程超过其时间片而导致上下文切换的次数。
方式 指示子例程应该执行的任务。 可接受的值如下所示:
PTHRDSINFO_RUSAGE_START
返回当前资源利用率,这将是开始测量。
PTHRDSINFO_RUSAGE_STOP
返回自上次执行 PTHRDSINFO_RUSAGE_START 以来的当前资源总利用率。 如果未执行任务 PTHRDSINFO_RUSAGE_START ,那么返回的资源信息是自 pthread 启动以来的累积值。
PTHRDSINFO_RUSAGE_COLLECT
收集目标线程的资源信息。 如果未执行任务 PTHRDSINFO_RUSAGE_START ,那么返回的资源信息是自 pthread 启动以来的累积值。

返回值

成功完成后, pthread_getrusage_np 子例程返回值 0。 否则,将返回错误号以指示错误。

错误代码

如果下列其中一项为真,那么 pthread_getrusage_np 子例程将失败:
描述
EINVAL RUsage 指定的地址为 NULL ,无效或为 Ptid 指定了空值。
ESRCH 找不到与 Ptid 线程的标识线程对应的线程,或者与 Ptid 线程标识对应的线程不在当前进程中。