关于perfstat_cpu_total函数的一点疑问

pengxn pengxn 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在AIX主机上使用perfstat_cpu_total获取的系统IDLE等参数为什么总感觉和TOPAS系统返回的值总是不准。

我使用的方法是这样。

static perfstat_cpu_total_t t1,t2;
double total_cpu;
perfstat_memory_total_t m1;

// EDIT BY PENGXN 为了准确增加查询次数
int nOffset = 8;
total_cpu = 0;
info.iCpuSys = 0;
info.iCpuWait = 0;
info.iCpuUser = 0;
info.iCpuIdle = 0;

for(int i=0;i<nOffset;i++)
{
t2 = t1;
if (perfstat_cpu_total(NULL,&t1,sizeof(perfstat_cpu_total_t),1)<0)
return -1;

total_cpu = (t1.psys+t1.puser+t1.pidle+t1.pwait-(t2.psys+t2.puser+t2.pidle+t2.pwait));
info.iCpuSys += (int)((t1.psys-t2.psys)*1000/total_cpu);
info.iCpuWait += (int)((t1.pwait-t2.pwait)*1000/total_cpu);
info.iCpuUser += (int)((t1.puser-t2.puser)*1000/total_cpu);
info.iCpuIdle += (int)((t1.pidle-t2.pidle)*1000/total_cpu);

usleep(20);
}

info.iCpuSys = info.iCpuSys/nOffset;
info.iCpuWait = info.iCpuWait/nOffset;
info.iCpuUser = info.iCpuUser/nOffset;
info.iCpuIdle = info.iCpuIdle/nOffset;


请问一下这个函数具体应该怎么用,或在AIX主机上有没有什么其他更好的办法
...全文
评论 3
收藏 已收藏
分享
返回顶部
pengxn
Linux_Kernel 4,469 成员 17,458 内容