10年测试老鸟总结,性能测试-CPU性能瓶颈分析(超详细)

本文是一位有着10年经验的测试工程师分享的CPU性能瓶颈分析,涵盖CPU指标要求、重要概念、相关分析命令及如何定位进程线程CPU高的方法。通过监控运行队列、上下文切换等,确保CPU利用率维持在合理范围内,同时提供性能测试的实战指导。
摘要由CSDN通过智能技术生成


前言

1、cpu指标要求

建议CPU指标如下:
对于每一个CPU来说运行队列不要超过3,例如,如果是双核CPU就不要超过6;

如果CPU在满负荷运行,应该符合下列分布:
User Time:65%~70%,us过大,说明有用户进程占用很多cpu时间,需要进一步的分析其它软硬件因素。

System Time:30%~35%,sy过大,说明系统管理方面花了很多时间,说明该系统中某个子系统产生了瓶颈,需要进一步分析其它软硬件因素。

User Time+System Time,合理值范围是 60-85%,如果在一个多用户系统中us+sy时间超过85%,则进程可能要花时间在运行队列中等待,响应时间和业务吞吐量会受损害

Idle:0%~5%,CPU完全空闲的百分比
对于上下文切换要结合CPU使用率来看,如果CPU使用满足上述分布,大量的上下文切换也是可以接受的。

出现cpu计数器不在范围时,不一定是由于cpu资源不够,因为其他资源的也会引起,例如内存不够时,cpu会忙内存管理的事,表面上可能是cpu的利用为100%

2、cpu3个重要概念

有3个重要的概念:上下文切换(context switchs),运行队列(Run queue)和使用率(utilization)

1)查看运行队列,使用top或者uptime查看:
每个CPU都会维持一个运行队列,理想情况下,调度器会不断让队列中的进程运行。进程不是处在sleep状态就是run able状态。

如果CPU过载,就会出现调度器跟不上系统的要求,导致可运行的进程会填满队列。

队列愈大,程序执行时间就愈长。

“load”用来表示运行队列,用top 命令我们可以看到CPU一分钟,5分钟和15分钟内的运行队列的大小。

这个值越大表明系统负荷越大。用uptime得到的3个负载值除以逻辑CPU数,如果3个结果值均>1,则表示CPU过载。

2)查看上下文切换,使用vmstat查看cs:
每个CPU(或多核CPU中每个核心)在同一时间只能执行一个线程,Linux采用抢占式调度,线程的处理器可以在同一时间运行多个线程(包括多核CPU),Linux内核会把多核的处理器当作多个单独的CPU来识别;

即为每个线程分配一定的执行时间,当到达执行时间,

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值