system.cpu.usage parameter of HPUX subagent problem

Started by xiuzhh, March 05, 2014, 04:29:52 AM

Previous topic - Next topic

xiuzhh

Hi:
    I  found the data collected by system.cpu.usage parameter of HPUX subagents  inconsistent with the other performance tools like glance,top,vmstat and so on.
    I tried to trace the CpuUsageCollector function in src/agent/subagent/HPUX/system.cpp and found the reason:
    The HPUX subagent counts the cpu wait  statment as cpu usage:
    m_cpuUsage[m_currentSlot++] = 100 - ((float)((psd.psd_cpu_time[CP_IDLE] - m_idle) * 100) / delta);
    but other performace tools counts the cpu wait statment as cpu idle.
    I modified the souce code like this:
    m_cpuUsage[m_currentSlot++] =  ((float)(((psd.psd_cpu_time[CP_USER] - m_user) + (psd.psd_cpu_time[CP_SYS] - m_sys) ) * 100) / delta)   (mybe adds the CPU nice statment is better);
    As a result this metric  was consistent  with other performance tools. 
    I wonder which way calculates the CPU usage is more helpful.