很多客户注意到topas、nmon、ps命令显示的进程CPU使用率有明显差别,通常ps显示的进程CPU使用率相比topas、nmon偏小,而且nmon显示的进程CPU使用率可能超过100%.
topas、nmon均采用2秒的默认刷新周期,因此,除首次显示以外,topas/nmon统计的进程CPU使用率是基于最近2秒的使用情况。而ps的统计周期是从被监控命令从进程启动开始计算到ps命令执行的时间段。
除了统计时间段的差异,topas、nmon、ps命令采用的CPU使用率计算公式也有所不同:
nmon算法(nmon,然后t,看到的进程CPU使用率)
CPU% = 进程使用的CPU时间 / 实际流逝时间
由此公式可知,在分区拥有多个物理CPU的场景下,nmon显示的进程CPU使用率可能超过100%. 典型场景可见于db2、oracle等多线程应用。
topas算法(topas命令看到的进程CPU使用率)
CPU% = 进程使用的CPU时间 / 实际流逝时间 / 物理CPU数量
由此公式可知,topas统计的进程CPU使用率最高为100%.
注:
从POWER5开始,进程使用的CPU时间均基于处理器的PURR(Processor Utilization Resource Register)寄存器统计,精确度明显提升;
说明:
示例使用的进程(nfile/ksh脚本)从启动开始就有持续稳定的CPU消耗,因此不同命令统计周期的影响可以忽略。
**但实际的应用场景中,由于大部分应用进程不会一直处于CPU资源消耗峰值,因此必须考虑统计时间段的差别。考虑到ps统计周期从进程启动开始,如果算上闲时,ps所显示的CPU使用率会相对topas/nmon更低。
**
如果部分客户有个性化监控需求,可以参考如下文档:
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论0 条评论