在oramon程序的AIX版本中, 增加了CPU利用率的显示, 以便更好地观察数据库服务器的运行情况, 如下所示:
www.alipay.com Load SY/WT/US Rq
07/16-08:45:51 1.64 8/21/15 18
07/16-08:46:01 1.78 5/20/12 20
07/16-08:46:11 1.90 7/22/16 23
07/16-08:46:21 1.91 6/21/13 23
07/16-08:46:31 1.92 5/22/12 14
07/16-08:46:41 1.78 4/21/11 10
07/16-08:46:51 2.05 5/21/14 19
07/16-08:47:01 2.28 4/21/11 12
一直都相信通过libperfstat接口计算出来的值, 并且一直以为CPU利用率很低, 我们的P590够强大. 直到有一天, 用topas看时, 突然间注意到SYS和USER这两个值总是比我程序中输出的高一倍左右, 也就是oramon程序中显示的CPU利用率偏低了, 只有WIO是正常的. 问题在哪儿呢?
原来设置SMP支持选项后, 在操作系统中一个物理的CPU被看成了两个逻辑CPU了, 相当于超线程的概念了. 这样做可以提升CPU的处理能力, 查网上资料, 有人分析说, 在Power 5的芯片上可以提升30%, 在Power 6的芯片上可以提升40%的性能. 而oramon程序中, 就是取了按逻辑CPU算的值, 而不是按物理CPU算的值, 因此利用率大约相差了一倍.
在perfstat_cpu_total_t结构中, 我原来取的是下面四个值:
sys, user, idle, waits
改成取另外四个值来计算就行了:
psys, puser, pidle, pwaits
IBM的东西太不懂, 有人要自已编写AIX上的性能监控程序的话, 可以去搜索一下libperfstat, 或参考这个网页.