性能测试之CPU解析(*NUX)

说cpu可以从top中来理解,第一行中load averages代表着运行和等待任务综合取时间的百分比
从以上大家经常误以为都是等待任务的总和时间
在对于很多人应用上得出的结论,load值不应该高于3,如果cpu为2个则不应该高于6
当这个值过大时候,应该先分析linux中内核配置最大线程数是否正确。
在*nix中,没有改过的内核最大能使用51200个线程。linux(redhat)下是/etc/sysctl.conf
而下面行中,对于us sy ni id参数也很重要
us代表 init分配出来的用户进程占用cpu性能百分比
sy代表 系统自身调用占用cpu百分比(例如对于写入硬盘,是设备对于数据包的io写入)
ni代表 用户进程空间内改变过优先级的进程占用cpu百分比
id代表 系统cpu空闲
wa代表 所有进程被阻塞等待完成一次io占用id百分比
还有对于多个cpu查看大多数linux可以在top中点击 数字1开展开查看 若不支持该命令可以使用mpstat -P ALL来查看cpu个数及内核版本
在性能测试中并发情况很多,需要使用vmstat关注
关注1:r 等待运行的进程数
关注2:in(system) 每秒的内核中断次数
关注3:cs(system) 每秒的上下文切换线程次数
r在并发时候应当很稳定为好,至于多少需要根据应用,没有是最好的理想。
对于in和cs在并发时候会很高,原因是内核正在不停的并发处理。需要记录便于以后优化做说明
需要注意当id(cpu)中是否长时间为0 r也很高上10位数字,这时我建议应该查看程序在并发处理时,是否导致cpu调度出现异常处理。

对于内核调度说明,可以让你更好理解in和cs
当系统做上下文切换时,cpu保存所有进程的正文信息并获得新进程的所有正文内容
正文信息包括大量的linux追踪每个进程信息,尤其是一些资源:那些进程正在执行,被分配了哪些内存,
它打开了那些文件,等等。切换正文会触发大量的信息移动,这是比较高的开销,如果可能的话尽量保持很小的上下文切换。
为了尽可能的减小上下文切换,你首先需要知道它们是怎么产生的。
首先,内核调度触发上下文切换.为了保证每个进程平等的共享cpu时间,内核周期性中断的进程,
如果合适,内核调度器会开始一个其他的进程而不是让当前的进程继续执行,每次的周期性中断或者定时中断都可能触发上下文切换,
每秒定时中断的次数因不同架构和不同的内核版本而不同

posted on 2010-02-22 09:59  任斌  阅读(1754)  评论(1编辑  收藏  举报

导航