• 0
  • 1
分享
  • 性能测试-Cpu负载和Cpu利用率
  • 恬恬圈 2019-11-26 13:20:55 字数 2219 阅读 2430 收藏 1

概述

做压力测试的时候,我们经常会关注两个指标,CPU利用率和CPU负载

Linux中,进程分为三种状态:

  • 阻塞的进程blocked process

  • 可运行的进程runnable process

  • 正在运行的进程running process

当进程处于不可中断时,进程会等待I/O设备的数据或者系统调用;进程处于可运行状态时,它处在一个运行队列中,与其他可运行进程争夺CPU

CPU使用率

CPU使用率指的是程序在运行期间实时占用的CPU百分比,这是对一个时间段内CPU使用状况的统计。

通过这个指标可以看出在某一个时间段内CPU被占用的情况

load-average 

它指的是正在运行(running)和不可中断(等待IO)的平均进程数。在linux top命令中指的是是最近1分钟、5分钟和15分钟的系统平均负载

1.png

CPU负载的计算

CPU数量和CPU内核数都会影响到CPU负载,因为任务最终是要分配到CPU核心去处理的。

两块CPU要比一块CPU好,双核要比单核好。因此,除去CPU性能上的差异,CPU负载是基于内核数来计算的。

“有多少内核,就有多少load”。如单核负载为1.00,双核负载为2.00.以此类推。

举例说明CPU负载

大家都要坐电梯坐电梯。假设一部电梯能站10个人,那当1-10人坐电梯时,可以认为电梯的load<1;

正好10人时,load=1;

超过10人时,load>1;

如果有15个人要坐电梯,那就是说能有10人直接上过山车,另外5人需要等待。

此时电梯的load=15/10 = 1.5

也就是说,1.5的负载表示系统当前满负荷运转,且还有相当于50%满负荷的请求在等待

对于load average的临界值,业内有两种判断依据

  • load average <= cpu核数 * 0.7

  • load average <= cpu核数 - 1

为什么会有高Load,低CPU使用率的情况?

依然拿电梯的例子来说明。假设一共有20个人来坐电梯。电梯一次运行5分钟。两次运行之间,第一批10人下来,第二批10人来,电梯等人进来,加上关门时间时间也要3分钟。这种情况下电梯的使用率就是50%左右。而过山车的load是2。对应到我们的CPU上,当运行的进程(线程)过多时,频繁的上下文切换耗费了大量的CPU时间,导致真正用在运算的CPU时间片比较少(低CPU使用率),却有很多进程在等待运行(高Load)。 

CPU利用率和 load 值高低没有直必然关系

我们做压测的时候一般认为 CPU 利用率和 Load 值是正比的关系,既Load 值越高,CPU 利用率就越高。但是事实上有时候 Load 很高,CPU 利用率却比较低(多核更可能出现分配不均的情况)。

因为 Load 是等待处理的任务队列,当你的应用在等待同步消息返回处理的同时,CPU 还是会将时间切片分配给这些线程。

而真正需要 CPU 的那些线程,却不得不在得不到时间片以后暂时放弃工作被挂起。

CPU利用率高也并不意味着负载就一定大,可能这个任务是一个CPU密集型的。CPU低利用率的情况下也会有高Load Average的情况。当CPU分配时间片以后,是否使用完全取决于使用者,因此完全可能出现低利用率高Load Average的情况。

因此在程序设计的时候要考虑如何利用好CPU的这个资源,如何均匀的将压力分摊到各个CPU 上(有时候一个线程在不断循环,导致单个CPU负荷很高)

再举例

公共电话亭里有一个人在打电话,后面有四个人在等待,每人限定使用电话一分钟。若有人一分钟之内没有打完电话,只能挂掉电话去排队,等待下一轮。公共电话在就相当于CPU,而正在打电话或等待打电话的人就相当于任务数。

在电话亭使用过程中,肯定会有人打完电话走掉,有人没有打完电话而选择重新排队,更会有新增的人在这儿排队。人数的变化就相当于任务数的增减。为了统计平均负载情况,我们5秒钟统计一次人数,并在第1、5、15分钟的时候对统计情况取平均值,从而形成第1、5、15分钟的平均负载。

有的人拿起电话就打,打满1分钟,有的人可能前三十秒在找号码,或者犹豫要不要打,后三十秒才真正开始打。如果把电话看作CPU,人数看作任务,我们可以说前一个人(任务)的CPU利用率高,后一个人(任务)的CPU利用率低。当然, CPU并不会在前三十秒工作,后三十秒歇着,它一直在处于load状态。

有的程序涉及到大量的计算,所以CPU利用率就高,而有的程序牵涉到计算的部分很少,CPU利用率自然就低。但无论CPU的利用率是高是低,跟后面有多少任务在排队没有必然关系(cpu利用率和load没有必然关系)。

在Linux系统中,可以通过命令看到系统平均负载load-average的输出。

uptime

top

saq -q

runq-sz:运行队列的长度(等待运行的进程数)

plist-sz:进程列表中进程(processes)和线程(threads)的数量

ldavg-1:最后1分钟的系统平均负载(Systemload average)

ldavg-5:过去5分钟的系统平均负载

ldavg-15:过去15分钟的系统平均负载


本文为51Testing经授权转载,原文链接:https://www.cnblogs.com/Zfc-Cjk/p/11528936.html。转载文章所包含的文字来源于作者:飞天小子。如因内容或版权等问题,请联系51Testing进行删除。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、什么是接口测试主要用于检测外部系统与系统之间内部各个子系统之间的交互点,测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。接口可分为内部接口(开发人员)和外部接口(如组件接口和web服务器):系统与系统之间的调用;例如支付宝提供接口给淘宝调用,一个业务的修改可能会影响其他业务的使用,这是需要做接口测试;上层服务对下层服务的调用;例如Service层会调用DAO层的接口,而应用层会调用服务层提供的接口,比如注册用户时,会调用用户查询的服务,查询用户是否已经注册;我们所要做的接口测试,先了解基于哪一种的接口测试(不同类型测试方法不同),总之,我们只要把接口当成服...
            0 0 1326
            分享
          • IT之家 10 月 7 日消息,据充电头网消息,苹果 iPhone 14 原装 C-L 数据线的连接器从 C94 换为 C91M。据报道,新的 C91M 数据线的元件布局与老款 C94 相同,快充性能也无明显差别。充电头网称,苹果更换 C91M 连接器可能是出于防伪考虑。IT之家曾报道,不久前,欧洲议会以压倒性的票数支持在 2024 年底前强制将 USB-C 作为包括 iPhone 和 AirPods 在内的各种消费电子设备的通用充电端口。这可能意味着新的 C91M 数据线可能将是苹果最后一代的 Lightning 数据线。欧洲议会新法规规定,从 2024 年秋季开始,USB type-C 将...
            0 0 1150
            分享
          •   及时同步信息  在工作中,出现问题时应及时跟进并向关键人员同步进展。但实际工作中,比较常见的是问题出现后,你跟进得可能很及时,但问题产生的原因、影响、进展情况等信息的同步往往比较滞后,通常是主管或项目干系人询问你,你才反馈出来。如果你存在这样的情况,那么本文就是为你准备的。  一个问题的生命周期大体包含问题出现、问题发现、问题分析,问题定位,问题解决或改进几个环节,发现问题时就应该同步,而不是问题解决或改进了再同步。对于QA来说,日常工作的信息同步有两大类场景,一类是线上问题的同步,一来是项目进展的同步。  关于线上问题的同步  发现线上问题时,应第一时间反馈给你的主管。大体上包含如下几块...
            0 0 622
            分享
          •   据报道,亚马逊CEO安迪·贾西公司已经在人工智能大战中落后。  他对亚马逊在人工智能领域落后于微软和谷歌的说法进行了反驳。尽管后两家科技巨头已经将聊天机器人融合到各自的搜索引擎中,但贾西却认为目前还处于“炒作周期”,尚未进入“实质周期”。  “我认为多数人都关注这类应用,比如ChatGPT引发了大家的关注,但生成式人工智能有三个主要的层(即应用层、模型层和基础设施层),我认为它们都很重要”,贾西称。  贾西曾经表示,亚马逊计划在整个公司范围内投资人工智能,但人工智能程序有潜力增强“几乎所有的客户体验”。但他特意指出了亚马逊云AWS,认为这是能够长期利用人工智能热潮的一项业务。  今年早些时...
            0 0 1025
            分享
          • 普通的移动app是需要安装的,但是绝大部分的app不会经常使用,但仍然会占用手机存储空间,所以开始出现免安装app,微信小程序实际是一种免安装的app。类似的比如华为、小米等手机厂商推出的快应用、支付宝小程序。微信小程序实际是运行在微信之上。小程序的类网页经过微信翻译之后以http数据的形式和服务器进行交互。小程序无法脱离微信来进行使用。微信小程序的页面可以包含:1、小程序页面(WXML+WXSS)2、M页页面(H5移动网页)3、toast信息(过一段时间会自动消失的信息,比如登录成功的提示信息,1、2秒后自动消失)4、弹窗微信小程序功能测试微信小程序分为三个版本:1、开发版2、体验版(需要在...
            0 5 8004
            分享
      • 51testing软件测试圈微信