文档章节

理解load average和cpu使用率

laichendong
 laichendong
发布于 2014/06/25 09:27
字数 1275
阅读 1673
收藏 1
《linux中找到最耗CPU的那段Java代码》中提到了cpu使用率和load average。但并没有说明这两者具体的含义和他们之间的关系。他们是衡量linux系统压力的两个重要指标。使用# top 命令可以查看到相关的值。 要理解这两个概念,首先要从cpu的时间片说起。 大家都知道,我们现在所使用的Windows、Linux、Mac OS X都是“多任务操作系统”,就是说他们可以“同时”运行多个程序,比如一边看电影还能一边聊QQ。但是,实际上一个CPU内核在同一时刻只能干一件事,那操作系统是如何实现“多任务”的呢?大概的方法是让多个进程轮流使用CPU一小段时间。由于这个“一小段时间”很短(在linux上为5ms-800ms之间),用户(人)感觉不到,就好像是几个程序同时在运行了。上面提到的“一小段时间”就是我们所说的CPU时间片。 CPU使用率,就是程序对CPU时间片的占用情况。打个比方:一段时间内,看电影的进程占用了30msCPU资源,QQ又占用了10ms,接着空闲了60ms。接着电影又占用了30ms,QQ占用了10ms,空闲了60ms。如果一段时间都是这个水平,那这段时间内,CPU的使用率大概在40%左右。 20130322165207 一般来说,CPU使用率在75%以上就是一个比较高的值。 小提示:top命令中,按数字键1可以查看到每个CPU内核的使用率情况。 load average就相对复杂一些了。他表示的是CPU的负载,但他所包含的信息不是 CPU的使用率状况,而是在一段时间内 CPU正在处理以及等待 CPU处理的进程数之和的统计信息,也就是 CPU使用队列的长度的统计信息。举例来说明: 去游乐园坐过山车。假设一辆过山车能装30个人,那当1-30人来玩过山车时,认为过山车的load<1;当正好30个人时,load=1;当超过30人时,load>1。如果有45个人要玩过山车,那就是说能有30人直接上过山车,另外15人则需要等待。此时过山车的load=45/30 = 1.5。也就是说,1.5的负载表示系统当前满负荷运转,且还有相当于50%满负荷的请求在等待。 可能你会说。不对啊,我经常看见我机器的load在3左右,但我的系统运行很正常,一点不是超负荷3倍运行的感觉。嗯,那我猜你拥有一台至少4核以上的机器吧!在多核系统中 。load average是基于内核的数量决定的,可以简单的理解为每个内核load之和。按每个内核100%负载来算,4个内核,load average的值就是4。那到底多高的负载是一个临界点呢?这没有一个绝对值,一个比较被人所接受的说法是: load average 应该 <= cpu核数 * 0.7。但这种计算方式有个问题。当cpu核数越来越大时, 那30%的空闲也越来越大。另一个也比较被接受的说法是: load average 应该 <= cpu核数 - 1到2。这种计算方式也有个弊端。当cpu核数越来越小时, 那前去的1-2占的比例也越来越大。这明显是值得商榷的。 我们发现,不管是使用# top 还是使用# uptime 命令。查看到的load都是3个值。分别表示最近1分钟,5分钟和15分钟的平均load。那我们到底该看哪个,以哪个值为准呢?其实之所以要给出3个值,就是希望我们能结合起来看。或者说希望展示一个动态的图表式的数据,比如最近一分钟显示负载120%。而最近5分钟和15分钟显示负载为50%。可能你不用太过担心。但是如果你发现系统的负载一直维持在120%以上。恐怕你就该加机器了。 还有一种情况, 高Load,但低CPU使用率。这是很多人想不通的一种诡异情况。还是拿上面过山车的例子来说明。假如一共有60个人来玩过山车。过山车一次运行5分钟。两次运行之间,第一批30人下车,第二批30人上车,系上保险装置等等也要花5分钟。这种情况下过山车的使用率就是50%左右。而过山车的load是2。对应到我们的CPU上,当运行的进程(线程)过多是,频繁的上下文切换耗费了大量的CPU时间,导致真正用在运算的CPU时间片比较少(低CPU使用率),却有很多进程在等待运行(高Load)。

© 著作权归作者所有

共有 人打赏支持
laichendong
粉丝 10
博文 85
码字总数 71483
作品 0
朝阳
程序员
理解load average和cpu使用率

cpu使用率和load average是衡量linux系统压力的两个重要指标。使用# top 命令可以查看到相关的值。 要理解这两个概念,首先要从cpu的时间片说起。 大家都知道,我们现在所使用的Windows、Lin...

潘驴
2017/07/06
0
0
Linux系统的CPU使用率和Load

好吧,我承认这个话题是老生常谈,我自己也在2009年刚接触性能测试时就已经开始关注并略知一二;然而,对于CPU使用率和系统负载Load的确切含义以及它们之间的关系,我相信不是每个人都说得清...

fdhay
2016/04/18
80
0
理解Load Average做好压力测试

理解Load Average做好压力测试 SIP的第四期结束了,因为控制策略的丰富,早先的的压力测试结果已经无法反映在高并发和高压力下SIP的运行状况,因此需要重新作压力测试。跟在测试人员后面做了...

Professor哥
2017/12/19
0
0
压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Contex

压力测试衡量CPU的三个指标:CPU Utilization、Load Average 和 Context Switch Rate CPU Utilization 好理解,就是CPU的利用率,75%以上就比较高了(也有说法是80%或者更高)。除了这个指标...

Professor哥
2017/12/19
0
0
Linux 性能诊断:负载评估 (v2)

概要:负载诊断流程 观察load average (平均负载) 观察CPU、I/O是否存在瓶颈 从load avgerage等总括性的数据着手,参考CPU使用率和I/O等待时间等具体的数字,从而自顶向下快速排查各进程状态...

RiboseYim
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Shiro | 实现权限验证完整版

写在前面的话 提及权限,就会想到安全,是一个十分棘手的话题。这里只是作为学校Shiro的一个记录,而不是,权限就应该这样设计之类的。 Shiro框架 1、Shiro是基于Apache开源的强大灵活的开源...

冯文议
今天
1
0
linux 系统的运行级别

运行级别 运行级别 | 含义 0 关机 1 单用户模式,可以想象为windows 的安全模式,主要用于修复系统 2 不完全的命令模式,不含NFS服务 3 完全的命令行模式,就是标准的字符界面 4 系统保留 5 ...

Linux学习笔记
今天
2
0
学习设计模式——命令模式

任何模式的出现,都是为了解决一些特定的场景的耦合问题,以达到对修改封闭,对扩展开放的效果。命令模式也不例外: 命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。 解决了这...

江左煤郎
今天
3
0
字典树收集(非线程安全,后续做线程安全改进)

将500W个单词放进一个数据结构进行存储,然后进行快速比对,判断一个单词是不是这个500W单词之中的;来了一个单词前缀,给出500w个单词中有多少个单词是该前缀. 1、这个需求首先需要设计好数据结...

算法之名
昨天
15
0
GRASP设计模式

此文参考了这篇博客,建议读者阅读原文。 面向对象(Object-Oriented,OO)是当下软件开发的主流方法。在OO分析与设计中,我们首先从问题领域中抽象出领域模型,在领域模型中以适当的粒度归纳...

克虏伯
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部