CPU利用率与Load Average的区别?
CPU利用率,是对一个时间段内CPU使用状况的统计,通过这个指标可以看出在某一个时间段内CPU被占用的情况,如果CPU被占用时间很高,那么就需要考虑CPU是否已经处于超负荷运作,长期超负荷运作对于机器本身来说是一种损害,因此必须将CPU的利用率控制在一定的比例下,以保证机器的正常运作。
Load Average是 CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。
那么CPU利用率与Load Average对于性能测试的意义有什么区别呢?实际上,CPU利用率反映的是CPU被使用的情况,当CPU长期处于被使用而没有得到足够的时间休息间歇,那么对于CPU硬件来说是一种超负荷的运作,需要调整使用频度。而Load Average却从另一个角度来展现对于CPU使用状态的描述,Load Average越高说明对于CPU资源的竞争越激烈,CPU资源比较短缺。对于资源的申请和维护其实也是需要很大的成本,所以在这种高Average Load的情况下CPU资源的长期“热竞争”也是对于硬件的一种损害。
如何评估性能需求中合理的Load Average?
一般来说,Load Average是与机器内核数有关的。以一个单核的机器为例,load=0.5表示CPU还有一半的资源可以处理其他的线程请求,load=1表示CPU所有的资源都在处理请求,没有剩余的资源可以利用了,而load=2则表示CPU已经超负荷运作,另外还有一倍的线程正在等待处理。所以,对于单核机器来说,理想状态下,Load Average要小于1。同理,对于双核处理器来说,Load Average要小于2。结论是:多核处理器中,你的Load Average不应该高于处理器核心的总数量。
不同核处理器之间的load值怎样换算?
性能测试中可能遇到这样的问题,你的线上机器是8核的,但是线下性能测试机只有4核的与16核的,那么我用16核机器测试得到的load值是2.6,换算到8核机器上应该是多少呢?
很不幸,没有一个准确的公式可以用来换算。但是我们可以根据load的含义来做一个推断,假如我们在一个双核的机器上测试100个线程并发访问X页面时load为2,那么同样的并发线程数请求同样的页面,在一台单核的机器上测试,load会是多少呢?在双核机器上,100线程同时请求时load为2,说明2个核都在满负荷运作,且平均每一个核在同时处理50个线程;如果在单核机器上100个线程同时请求,并且假设每一个核还是能同时处理50个线程,那么就会有50个线程在等待,这样看起来CPU的load还是2,但事实上,100个线程同时请求CPU时,已经超出了一个CPU可以同时处理的线程的能力,必然会出现线程之间竞争CPU资源的情况,而线程对CPU的“热竞争”会使CPU耗费更多的资源去做线程调度的事情,所以总体效果来看,单核时load值实际会高于2。
上面是我自己的推论,网上还没有找到相应的资料验证。假如这种推论是对的,那么16核机器上测试得到的load为2.6,在8核机器上测试的话load值肯定高于2.6。究竟高多少应该跟CPU本身的性能也是有关的,具体我还不清楚该如何评估。有兴趣的同学可以一起来讨论讨论哦!
分享到:
相关推荐
理解Load Average做好压力测试
Clarify what UNIX load average really is and helpful for sysadmin.
详解Linux中Load_average负载
在输入查看可用的CPU核数命令,获得12时,意味着本系统可用CPU核数12...系统负载/CPU负载–是Linux系统中CPU利用率过高或过低的度量;CPU正在执行或处于等待状态的进程数。 平均负载(load average)-是在给定的1、5和1
Clarify what UNIX load average really is and helpful for sysadmin.
在对系统的方法化分析中,首要且基本的工具之一常常是对系统的 CPU 利用率进 行简单测量。 Linux 以及大多数基于 UNIX 的操作系统都提供了一条命令来显示系统的 平均负荷 (loadaverage) 。 [huangc@V-02-01-...
Clarify what UNIX load average really is and helpful for sysadmin.
stm32cube 库自带,此算法是基于操作系统的,理论上不限于任何操作系统,只要有任务调度就可以。 使用方法说明:http://blog.csdn.net/ben392797097/article/details/73015198
freertos 情况下 cpu 占用率的统计方式,简单方便,易移植。不仅仅局限于 freertos, 此类算法可适用于多种 rtos 的 cpu 使用率统计
介绍linx 下的 loadaverage的概念
但在不同的系统间这个值也是不同 的,例如一个单CPU的工作站,load average为1或者2都是可以接受的,而在一个多CPU的系统中这个值应除以物理CPU的个数,假设CPU个数为4,而load average为8或者10,那结果也是在2多点...
let cpu = require ( 'cpu-load' ) // track the CPU load over the next 1 second cpu ( 1000 , function ( load ) { load //=> 0.03 (3%) } ) CPU 负载在多核机器上平均。 无需将 CPU 负载结果除以内核数。
计算DM642 cpu占用率,在ccs目录下也有。 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。20字。
Load与initalize区别
平均负载(load average)是指某段时间内占用cpu时间的进程和等待cpu时间的进程数,这里等待cpu时间的进程是指等待被唤醒的进程,不包括处于wait状态进程。 以上分析可以看出,一台机器很有可能处于低cpu使用率高...
dubbo 配置 loadbalance 不生效?撸一把源码(csdn)————程序
使用unix工具监控cpu、内存等系统资源占用率 3)使用uptime命令监控cpu负载 $ uptime 12:45pm up 119 day(s), 19:01, 1 user, load average: 2.96, 2.98, 3.30 提供快速查看cpu中所有任务(包括正在运行的任务)在1...
session的get与load比较
包含CPU使用率、内存使用率、虚拟内存使用率、内存总量等。数据比较符合靠谱。 ***************************************************************************** using System; using System.Collections.Generic; ...
压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate.doc