关于CPU的运行队列与系统负载
在linux操作系统中,我们一般查看系统的cpu负载情况常用的命令可以是uptime,top,还有vmstat等这些个都是可以有的。每个工具所提供的信息各不相同,
我这里要讨论的仅说cpu部分。使用uptime命令,可以得到操作系统在过去1分钟,5分钟和15分钟的cpu平均负载值,也就是传说中的 load average,这个和top命令右上角那个地方显示出来的东东是想通的,那么这个load average到底是个什么样的东西呢,其实它表示的就是在cpu里面运行的进程数量,不过这里的进程和使用命令来查看到的进程可不太一样。在一定时间内 cpu所能处理和承载的进程数量是有限的,这个数值与cpu的性能有直接关系,或者说这个数值标志着cpu的性能高低,反应到实际的计算机使用上来就是更 高性能的cpu可以在同一时间处理更多进程内容,所以说,一般当你去电脑城买个人电脑的时候导购就会问你电脑的大致用途,其实他们这个时候是在帮你计算你 所需要的电脑性能,其中就包括计算cpu的最大负载值,当然他们一般都不会这么去算,而是根据价格,因为价格高的cpu往往性能就更好,紧接着,他们会问 你大概的预算,其实当了解到你买电脑的用途之后他们自己心里已经帮你预算好了,如果你的预算高于他们的预算,那么恭喜那位卖电脑的,他可以多赚点了。所以 买电脑一定要根据实际需求,比如说cpu支持很高的负载,而你在实际使用中却根本达不到那么高的负载,那不就成了杀鸡用杀猪刀么。
扯远了,说到底,cpu在单位时间内所能处理的进程数越高,那它的性能应该就越高。但是关于这个负载,网上资料有很多种说法,有的说是负载不应该超 过cpu的核心数量,有的说不应该超过cpu核心数量的2倍,有的说不应该超过cpu核心数量的3倍,为什么会有这么多种说法呢,其实大家都是担心一个相 同的问题----怕cpu扛不住,这里超不超过几倍不要紧,最主要的判断标准是你的cpu在达到一定程度负载的时候是不是系统和应用程序依然运行良好,也 就是说判断标准还与实际的应用有关,如果cpu的负载都超了核心数好几倍但是软件运行还依然顺畅,那这个也是可以有的。这里就得说说cpu的运行队列了, 有关运行队列的状态参数可以通过vmstat命令来查看,这里不多做解释,它有两项,一项是run,一项是blocked,也就是vmstat查看到的最 前面的两排,run代表正在cpu里面执行的,blocked代表由于磁盘或其他方面的瓶颈导致他在cpu里面等待的,这两个数值其实和使用uptime 或者top命令查看到的系统负载值是很有关系的,基本上,系统在某个时间的负载值就等同于run的值加上blocked的值,但是这里直接这样用加法来表 示也是不对的,系统负载值是一个平均值,可以是小数,而运行队列的数目是整数。在cpu处于空闲的情况下,run+blocked一般接近0,偶尔蹦出个 1啊2啊的,所以空闲状态下的负载均值一般都是0.几。
但是,当系统的负载逐渐升高,也就是说cpu里运行的东东逐渐变多,那么反应到负载均值上其数值也会跟着逐渐增大,而且可以是很大很大,完全超出 cpu核心数的好多倍,比如我前几天用一台8核机器做测试的时候用top命令查看到的负载值居然达到了将近600,这已经远远超出了cpu可承受的范围, 那为什么已经超出了可接受范围这个负载均值还可以涨到那么高呢,这是因为在cpu里,同一时间可以运行的进程数量有限的,也就是说,vmstat查看到的 run值最大不能超过某个数,但是blocked却可以继续变大,因为进程已经blocked掉了,它几乎占用不了多少cpu资源,而正在run的就不一 样了,一个cpu同一时间能run多少完全取决于它的物理性能,所以当你的机器负载不断升高,你用top命令查看到的负载值也会不断升高,而当负载达到一 定高度时,cpu能处理的运行队列也达到上限,run的值不再增加,这时,blocked的值会继续增加,理论上,blocked可以一直增加到直到系统 崩溃。
总结:在评估cpu的性能优劣时完全照搬网上说的几倍几倍是不准确的,还得你自己动手看看vmstat显示的run值和blocked值,当出现明 显较多的blocked的时候,就说明cpu产生了瓶颈。而top命令和uptime命令显示的负载均值,只能作为判断系统过去某个时间段的状态的参照, 与cpu的性能关系不大。
关于CPU的运行队列与系统负载的更多相关文章
- CPU性能判断指标---上下文切换,运行队列和使用率
http://blog.chinaunix.net/uid-15007890-id-3064254.html uptime11:35:08 up 21:57, 6 users, load aver ...
- Linux系统中的load average(平均负载/运行队列)
1.load average 的含义 系统负载(System Load)是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度(进程等待队列的长度) linux系统中的Load对当前CPU工作量的 ...
- linux系统中的基础监控(硬盘,内存,系统负载,CPU,网络等)
Linux系统常见日常监控 系统信息 查看 CentOS 版本号:cat /etc/redhat-release 综合监控 nmon 系统负载 命令:w(判断整体瓶颈) 12:04:52 up 1 ...
- 获取并检查系统负载\CPU\内存\磁盘\网络
安装依赖 需要net-tools.namp! CentOS:yum -y install net-tools nmap Ubuntu:apt-get update && apt-get ...
- shell脚本监控系统负载、CPU和内存使用情况
hostname >>/home/vmuser/xunjian/xj.logdf -lh >>/home/vmuser/xunjian/xj.logtop -b -n 1 | ...
- 监控系统负载与CPU、内存、硬盘、登录用户数,超出警戒值则发邮件告警。
zzx@zzx:~$ cat warning.sh #!/bin/bash #监控系统负载与CPU.内存.硬盘.登录用户数,超出警戒值则发邮件告警. 前提安装mail服务nh=`uname -r ...
- 监测linux系统负载与CPU、内存、硬盘、用户数的shell脚本
本节主要内容: 利用Shell脚本来监控Linux系统的负载.CPU.内存.硬盘.用户登录数. 一.linux系统告警邮件脚本 # vim /scripts/sys-warning.sh #!/bin ...
- linux 系统负载高 如何检查
1:load Average 1.1:什么是Load?什么是Load Average? Load 就是对计算机干活多少的度量(WikiPedia:the system Load is a mea ...
- Linux常用指令---系统负载
查看linux系统负载: http://www.lupaworld.com/article-217011-1.html在Linux系统中,uptime.top等命令都会有系统平均负载load aver ...
随机推荐
- HDU 6203 ping ping ping [LCA,贪心,DFS序,BIT(树状数组)]
题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=6203] 题意 :给出一棵树,如果(a,b)路径上有坏点,那么(a,b)之间不联通,给出一些不联通的点 ...
- NOIP 2018 提高组初赛解题报告
单项选择题: D 进制转换题,送分: D 计算机常识题,Python是解释运行的: B 常识题,1984年小平爷爷曰:“娃娃抓起”: A 数据结构常识题,带进去两个数据就可以选出来: D 历年真题没有 ...
- HDU 1287 MC挖矿世界 set bfs
MC挖矿世界 题目连接: http://acm.uestc.edu.cn/#/problem/show/1287 Description 银牌爷和柱神开始玩MC啦,但是怪物实在是太多了,于是银牌爷决定 ...
- 开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表( 附加翻译) h2数据库
开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表 浪天涯博主翻译: referential integrity 参考完整性transactions 事 ...
- miniSpartan6, another Spartan 6 Kit
http://thehardwarer.com/2013/05/minispartan-6-another-spartan-6-kit/ miniSpartan6 is an Opens Source ...
- 引用计数的cocos2dx对象内存管理和直接new/delete box2d对象内存管理冲突的解决方法
转载请注明: http://blog.csdn.net/herm_lib/article/details/9316601 项目中用到了cocos2dx和box2d,cocos2dx的内存是基于引用计数 ...
- Java之基于Eclipse搭建SSH框架(上)
http://blog.csdn.net/snowwitch/article/details/50925382 http://www.cnblogs.com/hww123/archive/2016/0 ...
- Visual Studio IDE 背景色该为保护眼睛色
将背景颜色改成你想要的背景颜色. 将色调改为:85.饱和度:123.亮度:205->添加到自定义颜色->在自定义颜色选定点确定 就搞定了!
- js继承——到继承结束
说到继承,其它语言里可能有两种: 接口继承是继承方法签名,而实现继承则继承实际方法.ES函数没有签名,不能实现接口继承,只支持实现继承,而实现继承主要依靠原型链.(这两句话,说来轻松,理解来不易,且行 ...
- win7 系统装SQLServer2000 成功
昨天在win7上装SQLServer数据库,写一下体会.首先,如果以前安装的话,要删除干净.我也找了半天的网络资料.1.把原来SQLServer的安装目录 C:\Program Files\Micro ...