perfstat_cpu_total 子例程
用途
检索全局处理器使用情况统计信息。
库
Perfstat 库libperfstat.a
语法
#include <libperfstat.h> int perfstat_cpu_total (name, userbuff, sizeof_struct, desired_number)
perfstat_id_t *name;
perfstat_cpu_total_t *userbuff;
size_t sizeof_struct;
int desired_number;
perfstat_id_t *name;
perfstat_cpu_total_t *userbuff;
size_t sizeof_struct;
int desired_number;
描述
perfstat_cpu_total子程序在perfstat_cpu_total_t结构中返回全局处理器使用统计数据。
要获取整个系统的全局统计信息,必须将 name 参数设置为 NULL ,必须分配 userbuff 参数,并且必须将 desired_number 参数设置为 1。
perfstat_cpu_total子程序从ODM数据库中检索信息。 这些信息会自动缓存到字典中,而字典一旦加载就会被冻结。 每当机器配置发生变化时,必须调用 "perfstat_reset子程序刷新字典。
SPLPAR 环境将物理处理器虚拟化。 为了帮助精确测量虚拟化环境中使用的资源,POWER5系列处理器为每个内核设置了一个寄存器 PURR(处理器利用资源寄存器)。 PURR 是一个 64 位计数器,单位与时基寄存器相同,用于跟踪每个线程或每个分区所使用的实际物理处理器资源。 PURR 寄存器与之前由 "perfstat_cpu和 "perfstat_cpu_total子程序返回的全局计数器(用户、系统、空闲和等待字段)不兼容。 所有需要使用处理器的数据消费者都必须进行修改,以支持基于 PURR 的计算,如Perfstat API 编程下的perfstat_partition_total接口示例所示。
此子例程仅返回 工作负载分区 (WPAR) 内的全局处理器统计信息。
参数
| 项 | 描述 |
|---|---|
| 名称 | 必须设置为 NULL。 |
| 用户缓冲区 | 指向要填充perfstat_cpu_total_t结构的内存区域。 |
| 大小结构 | 指定perfstat_cpu_total_t结构的大小: 'sizeof(perfstat_cpu_total_t). |
| 期望数 (desired_number) | 必须设置为 1。 |
返回值
成功完成后,将返回已填充结构的数量。 如果不成功,则返回值为-1并设置errno全局变量。
错误代码
如果以下情况之一为真,则perfstat_cpu_total子程序将无法运行:
| 项 | 描述 |
|---|---|
| EINVAL | 其中一个参数无效。 |
| EFAULT | 内存不足。 |
| ENOMEM | 字符串缺省长度太短。 |
文件
libperfstat.h文件定义了标准宏、数据类型和子程序。