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_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文件定义了标准宏、数据类型和子程序。