免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1353 | 回复: 0
打印 上一主题 下一主题

CPU Utilization and Staturation [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-19 12:36 |只看该作者 |倒序浏览

                [color="#0099cc"]Utilization, 使用率。[color="#ff9900"]Saturation,饱和度?没看过中文怎么翻译的,说错了欢迎鄙视:)
在操作系统里,两者都表示某一资源(比如CPU,内存,IO)被使用的情况,可以结合在一起用来观察系统性能。在UNIX里(以SUN OS 5.11为例),CPU utilization通常指的是CPU时间在某段时间内被占用的百分比,可以通过vmstat里的id(idle)值来观察,id越小,说明CPU使用率越高。
# vmstat 5
kthr memory page disk faults cpu
[color="#ff9900"]r b w swap     free      re mf   pi po fr de sr s0 s3 -- -- in   sy     cs    us sy [color="#0099cc"]id
[color="#ff9900"]0 0 0 4577000 855376 52 328 0 0   0  0  0  0  0  0   0  422 9088 9331 72 6 [color="#0099cc"]22
[color="#ff9900"]0 0 0 4577000 855376 29 203 0 0   0  0  0  0  0  0   0  413 8624 9259 72 6 [color="#0099cc"]22
[color="#ff9900"]0 0 0 4577000 855376 49 302 0 0   0  0  0  0  0  0   0  419 8979 9347 72 6 [color="#0099cc"]22
可以看到,在vmstat输出的3行数据里,CPU空闲时间一直是22%,即使用率一直是88%。
CPU saturation指的是在一段时间内CPU上的负载,或者说CPU上运行进程的多少,可以通过uptime或prstat输出的load average,或上面的vmstat中kthr(kernel thread)下的r(run queue,运行队列,Solaris内核里的一个数据结构,等待被分配到CPU时间的内核级线程被放在这个队列里)来衡量。
# uptime
3:31pm up 17 day(s), 1:12, 4 users, [color="#ff9900"]load average: 3.01, 3.01, 2.98
可以看到load average(平均负载?)后面的3个数字分别表示在之前1分钟,5分钟和15分钟内所有CPU上平均运行的进程数量。一般来说,对于我测试的SUN Netra 240, 双CPU的机器,load avg在2左右,即平均有两个左右进程在两个CPU上运行,系统的性能可以被充分利用,大于这个值则说明有进程不得不等待CPU时间。对于有16个虚拟CPU的T2000,这个值则可以相应地提高到16左右。也可以通过观察vmstat输出的kthr:r来衡量CPU saturation,从上面vmstat的输出可以看到r的值一直为零,说明run queue一直是空的,没有进程在等待CPU时间。
那么,怎么用这两个值来衡量系统性能呢?可以说,对于一个工作中的系统(OS+应用程序),要把系统的资源榨取到极限,最理想的情况是CPU利用率接近100%,同时没有进程在等待CPU(这里排除IO和其他一些因素的影响,只考虑进程主要依赖CPU资源的理想情况),即所有资源都被充分利用,所有消费者的需求都得到满足。这个目标可以通过在程序里调整线程数,尽量减少锁的使用来实现,很多时候要依靠经验和大量的测试了。
当然,vmstat,uptime,或者prstat这些工具都是非实时的,有很大局限性,很多时候它们的输出并不能反映某一小段时间的情况,很多性能瓶颈就这样被漏过了,这个问题比较复杂,看以后有机会再研究吧。如果真遇到这些工具搞不定的问题,强烈建议用DTrace,理论上可以得到任意精度的数据。什么?你用的不是Solaris10+,没有DTrace?那个...
废话几句,很多人(包括我)过去看一台PC的性能喜欢在Windows任务管理器下面看CPU使用率,觉得CPU使用率太高就不好,这个不知是Windows衡量的标准不一样还是下面的程序实现的问题,CPU使用率一般情况下不能太高,一旦高了就明显感觉系统反应慢了,又或者是因为PC多数用的是单CPU,CPU通常会成为性能瓶颈?欢迎讨
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/8618/showart_363281.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP