文档章节

理解load average和cpu使用率

laichendong
 laichendong
发布于 2014/06/25 09:27
字数 1275
阅读 1310
收藏 1
点赞 0
评论 0
《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
粉丝 8
博文 85
码字总数 71483
作品 0
朝阳
程序员
理解load average和cpu使用率

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

潘驴 ⋅ 2017/07/06 ⋅ 0

Linux系统的CPU使用率和Load

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

fdhay ⋅ 2016/04/18 ⋅ 0

理解Load Average做好压力测试

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

Professor哥 ⋅ 2017/12/19 ⋅ 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

Linux 性能诊断:负载评估 (v2)

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

RiboseYim ⋅ 2017/12/19 ⋅ 0

CPU利用率与Load Average的区别

CPU利用率,是对一个时间段内CPU使用状况的统计,通过这个指标可以看出在某一个时间段内CPU被占用的情况,如果CPU被占用时间很高,那么就需要考虑CPU是否已经处于超负荷运作,长期超负荷运作...

睿睿学IT ⋅ 2016/05/31 ⋅ 0

cpu 使用率和负载的关系和区别

Linux 下 CPU 使用率与机器负载的关系与区别 转载 2016年09月17日 10:27:09 2464 当我们使用top命令查看系统的资源使用情况时会看到 load average,如下图所示。它表示系统在1、5、15分钟的平...

wks97 ⋅ 02/26 ⋅ 0

《大规模WEB服务开发技术》读书笔记(II)——专栏知识汇总

1、Linux单主机的负载 负载均衡——前提是把一台服务器的性能发挥到极致。 通过测量找出系统的瓶颈,然后消除瓶颈,发挥性能。 寻找瓶颈的基本流程 查看瓶颈负载(load average):top或者upt...

ayesd ⋅ 2014/04/28 ⋅ 0

Linux shell采集系统资源

!/bin/bash FTP的ip FTPURLLOAD=192.168.72.130 FTP的登陆名 FTPUSERLOAD=test FTP的登陆密码 FTPPASSLOAD=test123 log路径 FTPLOADLOCAL=/home/monitor/log/ 上传文件路径 FTPLOADREMOTE=/h......

浅水ing ⋅ 01/03 ⋅ 0

系统负载:如何判断Linux load的值是否过高

接触过和使用过unix或linux的朋友,都知道如何查看Unix/Linux load的值,这边我也重复一下查看load的方法: [root@aaronw ~]# uptime13:33:37 up 7 days, 1:52, 1 user, load average: 4.15,...

snowing1990 ⋅ 2016/08/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

服务网关过滤器

过滤器作用 我们的微服务应用提供的接口就可以通过统一的API网关入口被客户端访问到了。但是,每个客户端用户请求微服务应用提供的接口时,它们的访问权限往往都需要有一定的限制,系统并不会...

明理萝 ⋅ 21分钟前 ⋅ 1

【2018.06.21学习笔记】【linux高级知识 14.1-14.3】

14.1 NFS介绍 NFS服务全称是NetWork File System:网络文件系统,最早有sun公司开发的,4.0版本由Netapp公司开发,是基于RPC远程过程调用(Remote Procedure Call)协议的服务。 14.2 NFS服务...

lgsxp ⋅ 30分钟前 ⋅ 0

Day18 vim编辑模式、命令模式与练习

编辑模式 命令模式 :nohl 不高亮显示 :x与:wq类似,如果在更改文件之后操作,两者效果一样;如果打开文件,没有任何操作; :wq会更改mtime,但是:x不会。 练习题 扩展 vim的特殊用法 ht...

杉下 ⋅ 33分钟前 ⋅ 0

Enum、EnumMap、EnumSet

1、Enum 不带参数 public enum Car { AUDI { @Override public int getPrice() { return 25000; } }, MERCEDES { ......

职业搬砖20年 ⋅ 34分钟前 ⋅ 0

Java中的锁使用与实现

1.Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。 在Lock出现之前,java程序是靠synchronized关键字实现锁功能的,而Java SE5之后,...

ZH-JSON ⋅ 35分钟前 ⋅ 0

线程组和 ThreadLocal

前言 在上面文章中,我们从源码的角度上解析了一下线程池,并且从其 execute 方法开始把线程池中的相关执行流程过了一遍。那么接下来,我们来看一个新的关于线程的知识点:线程组。 线程组 ...

猴亮屏 ⋅ 36分钟前 ⋅ 0

相对路径和绝对路径

基本概念   文件路径就是文件在电脑中的位置,表示文件路径的方式有两种,相对路径和绝对路径。在网页设计中通过路径可以表示链接,插入图像、Flash、CSS文件的位置。   物理路径:物理路...

临江仙卜算子 ⋅ 40分钟前 ⋅ 0

消息队列属性及常见消息队列介绍

什么是消息队列? 消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个队列的消息可以同时被多个消息消费者消费。分布式消息服务DMS则是分布式的队列系统,消...

中间件小哥 ⋅ 42分钟前 ⋅ 0

java程序员使用web3j进行以太坊开发详解

如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤器...

笔阁 ⋅ 43分钟前 ⋅ 0

vim编辑模式、vim命令模式

vim编辑模式 使用vim filename 进入的界面是一般模式,在这个模式下虽然我们能够查看,复制,剪切,粘贴,但是不能编辑新的内容,如何能直接写入东西呢?这就需要进入编辑模式了,从一般模式...

李超小牛子 ⋅ 45分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部