压测时CPU占比高,怎么分析?

性能测试过程中,发现CPU的占比一直很高,要怎么分析呢?

1、用户 CPU 和 Nice CPU 高,说明用户态进程占用了较多的 CPU,所以应该着重排查进程的性能问题
2、系统 CPU 高,说明内核态占用了较多的 CPU,所以应该着重排查内核线程或者系统调用的性能问题
3、I/O 等待 CPU 高,说明等待 I/O 的时间比较长,所以应该着重排查系统存储是不是出现了 I/O 问题
4、软中断和硬中断高,说明软中断或硬中断的处理程序占用了较多的 CPU,所以应该着重排查内核中的中断服务程序
碰到 CPU 使用率升高的问题,你可以借助 top、pidstat 等工具,确认引发 CPU 性能问题的来源;
再使用 perf 等工具,排查出引起性能问题的具体函数或算法。

还可以用vmstat命令,查看具体表现:

vmstat 2 5 这个参数的含义:每隔 2 秒运行一次并在第 5次运行后停止

 主要看下面的数据

1、in,cs 显示了系统相关活动:  
-in 系统每秒接收到的中断数  
-cs 在进程空间中切换上下文的速率(以数量/秒为单位)
这两个值越大说明由内核消耗的CPU越多。 
2、us,sy,id,wa 显示了 CPU 负载的信息:   
-us 显示花费在用户进程中的 CPU 百分比。(如果长期大于50%就要考虑优化程序或者算法)
-sy 系统进程(如所有根进程)使用的 CPU 百分比 (如果该值较大说明内核消耗的cpu资源较多,存在较大上下文切换及磁盘I/O等待,us+sy应该小于80%,如果大于80%说明cpu存在瓶颈) 
-id  可用 CPU 百分比  
-wa  花费在“等待 I/O”上的百分比 

 

posted @   板栗+  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示