关于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 ...
随机推荐
- Python之路【第七篇】:常用模块
一. 模块介绍 1. 什么是模块 在前面的几个章节中我们基本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了. 为此 Python ...
- debug id
id是Eclipse的debugger自己生成的,用于告诉你哪些变量是指向同一个对象:id相同即指向同一个对象. primitive不是对象,所以就没有id. 但是如果你用primitive的wrap ...
- Properties Editor 中文编辑器 汉化
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 在Eclipse的 [Help]-> [ Install New Software ...
- HDU 6084 寻找母串(卡特兰数)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6084 [题目大意] 对于一个串S,当它同时满足如下条件时,它就是一个01偏串: 1.只由0和1两种 ...
- 【DP】BZOJ1592-[Usaco2008 Feb]Making the Grade 路面修整
我活着从期中考试回来了!!!!!!!!!备考NOIP!!!!!!!!! [题目大意] 给出n个整数a1~an,修改一个数的代价为修改前后差的绝对值,问修改成不下降序列或者不上升序列的最小总代价. [思 ...
- bzoj2200道路和航线
试题描述 Farmer John 正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到 T (1≤T≤2.5×10^4)个城镇 ,编号为 1 到 T.这些城镇之间通过 R 条道路(编号为 1 ...
- 实用在线小工具 -- JS代码压缩工具
实用在线小工具 -- JS代码压缩工具 将JS代码进行压缩可以减少内存占用,下面链接是一个在线JS代码压缩工具,它将多余的空格和换行符压缩了. JS代码压缩工具链接:http://jspack ...
- 51nod 1225 余数之和 数论
1225 余数之和 题目连接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1225 Description F(n) ...
- PAT甲级1066. Root of AVL Tree
PAT甲级1066. Root of AVL Tree 题意: 构造AVL树,返回root点val. 思路: 了解AVL树的基本性质. AVL树 ac代码: C++ // pat1066.cpp : ...
- 我的jlink破解失败经历
http://fallenwind.spaces.eepw.com.cn/articles/article/item/59116 标题:我的jlink破解失败经历2009-07-12 01:16:56 ...