性能测试分析之CPU篇

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

性能测试分析之CPU篇目录Linux系统结构简介用户态CPU消耗分析内核态CPU消耗分析硬中断&软中断Loadaverage剖析Linux系统结构Linux系统结构几种CPU消耗Us%usercputime(or)%CPUtimespentinuserspaceSy%systemcputime(or)%CPUtimespentinkernelspaceNi%usernicecputime(or)%CPUtimespentonlowpriorityprocessesId%idlecputime(or)%CPUtimespentidleWa%iowaitcputime(or)%CPUtimespentinwait(ondisk)Hi%hardwareirq(or)%CPUtimespentservicing/handlinghardwareinterruptsSi%softwareirq(or)%CPUtimespentservicing/handlingsoftwareinterruptsSt%stealtime--%CPUtimeininvoluntarywaitbyvirtualcpuwhilehypervisorisservicinganotherprocessor(or)%CPUtimestolenfromavirtualmachineCPU调度用户态CPU例1:程序cpuusr%瓶颈问题定位。模拟程序TestMap主线程:死循环阻塞线程1:sleep线程2:循环mapfind操作执行命令:top–H–p7152用户态CPU执行命令:pstack7152分析过程:1.通过top–H–pXX发现线程7153占用cpu特别高2.通过pstack发现线程7153在做map查询操作,大量的红黑树查找操作。用户态CPU例2:程序cpuusr%瓶颈问题定位。(如果线程cpu消耗比较均衡)执行:perftop-p7152-ecycles:u参考案例:VTDU因CPU消耗过高回滚内核态CPU例3:定位sy%消耗过高问题执行:perftop-pxxxx-ecycles:k内核态CPU上下文切换(只会发生在内核态)1.当前执行任务时间片用完,cpu正常调度下一个任务。2.I/O阻塞3.抢占锁资源,用户代码挂起(sleep),等待条件变量4.硬中断&软中断例4:程序问题造成大量的上下文切换执行:TestCsw程序开启100个线程,每个线程usleep(1*1000)硬中断&软中断网卡中断为例:频繁的数据包收发会耗尽cpu时间多核cpu,如何做中断负载均衡?多队列网卡:只需配置每个队列的cpu亲和性,smp_affinity。单队列网卡:先通过RPS模拟出多队列再最cpu亲和性。RPS:根据数据包源地址、目的地址和源端口做hash,来选择不同cpu。RFS:RPS负载均衡的优化。Loadaverage剖析loadaverageSystemloadaveragesistheaveragenumberofprocessesthatareeitherinarunableoruninterruptablestate.AprocessinarunnablestateiseitherusingtheCPUorwaitingtousetheCPU.AprocessinuninterruptablestateiswaitingforsomeI/Oaccess,egwaitingfordisk.Theaveragesaretakenoverthethreetimeintervals.LoadaveragesarenotnormalizedforthenumberofCPUsinasystem,soaloadaverageof1meansasingleCPUsystemisloadedallthetimewhileona4CPUsystemitmeansitwasidle75%ofthetime.进程状态Loadaverage剖析例5:TASK_UNINTERRUPTIBLE状态进程过多导致load飙高执行:LoadTest程序调用vfork(),父进程进入D状态例6:TASK_INTERRUPTIBLE状态线程不会增加Load执行:LoadTest程序每个线程执行sleep进入S状态

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功