perfstat_cpu 子例程

用途

检索个别逻辑处理器使用情况统计信息。

perfstat 库libperfstat.a

语法

#include <libperfstat.h>
int perfstat_cpu (name, userbuff, sizeof_struct, desired_number)
perfstat_id_t * name;
perfstat_cpu_t * userbuff;
size_t sizeof_struct;
int desired_number;

描述

perfstat_cpu子程序会检索一个或多个处理器的使用统计数据。 可以使用相同的函数来检索逻辑处理器统计信息的可用集合数。

要获取一组或多组处理器使用指标,请将name参数设置为需要统计的第一个处理器的名称,并设置desired_number参数。 要从第一个处理器开始,请将 name 参数设置为 ""。 userbuff参数必须始终指向一个足够大的内存区域,以容纳该函数将复制的所需数量的perfstat_cpu_t结构。 返回时, name 参数将设置为下一个处理器的名称,或者在复制所有结构后设置为 ""。

要检索处理器使用情况度量的可用集合数,请将 nameuserbuff 参数设置为 NULL ,并将 desired_number 参数设置为 0。 返回值将是可用集合的数量。

此数字表示可供统计信息使用的逻辑处理器数。 在 动态逻辑分区 (DLPAR) 环境中,此数字是自上次重新引导以来联机处理器的最高逻辑索引。 有关perfstat_cpu子程序和DLPAR 的更多信息,请参阅《性能工具和 API 技术参考》中的Perfstat API文章。

SPLPAR 环境将物理处理器虚拟化。 为了帮助精确测量虚拟化环境中的资源使用情况, POWER5 系列处理器为每个核心实现一个寄存器 PURR (处理器利用率资源寄存器)。 PURR 是一个 64 位计数器,单位与时基寄存器相同,用于跟踪每个线程或每个分区所使用的实际物理处理器资源。 PURR 寄存器与之前由 "perfstat_cpu和 "perfstat_cpu_total 子程序返回的全局计数器(用户、系统、空闲和等待字段)不兼容。 所有需要使用处理器的数据消费者都必须进行修改,以支持基于 PURR 的计算,如 "Perfstat API编程下的 "perfstat_partition_total接口示例所示。

此子例程仅返回 工作负载分区 (WPAR) 内的全局处理器统计信息。

参数

描述
名称 包含""、FIRST_CPU 或标识第一个逻辑处理器的名称,需要对其进行统计。 逻辑处理器名称为:
cpu0, cpu1,...
要提供与先前版本的库的二进制兼容性,请使用 proc0, proc1, ... 之类的名称 仍将被接受。 这些名称将被视为使用了相应的cpuN名称,但结构中返回的名称始终是以cpu 开头的名称。
用户缓冲区 指向要填充一个或多个perfstat_cpu_t结构的内存区域。
sizeof_struct 指定perfstat_cpu_t结构的大小: 'sizeof(perfstat_cpu_t).
所需数量 指定要复制到userbuffperfstat_cpu_t结构的个数。

返回值

除非使用perfstat_cpu子程序来获取可用结构数,否则成功完成后将返回已填充的结构数。 如果不成功,则返回值为-1并设置errno全局变量。

错误代码

如果以下情况为真,则perfstat_cpu子程序不会成功运行:

描述
EINVAL 其中一个参数无效。

文件

libperfstat.h 文件定义标准宏,数据类型和子例程。