在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的运行队列与系统负载的更多相关文章

  1. CPU性能判断指标---上下文切换,运行队列和使用率

    http://blog.chinaunix.net/uid-15007890-id-3064254.html uptime11:35:08 up 21:57,  6 users,  load aver ...

  2. Linux系统中的load average(平均负载/运行队列)

    1.load average 的含义 系统负载(System Load)是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度(进程等待队列的长度) linux系统中的Load对当前CPU工作量的 ...

  3. linux系统中的基础监控(硬盘,内存,系统负载,CPU,网络等)

      Linux系统常见日常监控 系统信息 查看 CentOS 版本号:cat /etc/redhat-release 综合监控 nmon 系统负载 命令:w(判断整体瓶颈) 12:04:52 up 1 ...

  4. 获取并检查系统负载\CPU\内存\磁盘\网络

    安装依赖 需要net-tools.namp! CentOS:yum -y install net-tools nmap Ubuntu:apt-get update && apt-get ...

  5. shell脚本监控系统负载、CPU和内存使用情况

    hostname >>/home/vmuser/xunjian/xj.logdf -lh >>/home/vmuser/xunjian/xj.logtop -b -n 1 | ...

  6. 监控系统负载与CPU、内存、硬盘、登录用户数,超出警戒值则发邮件告警。

    zzx@zzx:~$ cat warning.sh #!/bin/bash #监控系统负载与CPU.内存.硬盘.登录用户数,超出警戒值则发邮件告警.    前提安装mail服务nh=`uname -r ...

  7. 监测linux系统负载与CPU、内存、硬盘、用户数的shell脚本

    本节主要内容: 利用Shell脚本来监控Linux系统的负载.CPU.内存.硬盘.用户登录数. 一.linux系统告警邮件脚本 # vim /scripts/sys-warning.sh #!/bin ...

  8. linux 系统负载高 如何检查

    1:load Average 1.1:什么是Load?什么是Load Average?    Load 就是对计算机干活多少的度量(WikiPedia:the system Load is a mea ...

  9. Linux常用指令---系统负载

    查看linux系统负载: http://www.lupaworld.com/article-217011-1.html在Linux系统中,uptime.top等命令都会有系统平均负载load aver ...

随机推荐

  1. 恢复mysql数据库误删数据

    前言 某一天,天朗气清:突然传来消息:数据库被删库了!这简直不亚于8级大地震呀:一找原因,服务器宕机造成了数据库数据丢失.于是,通过日志恢复数据的救援开始了. 正文 在数据库开启binlog功能 找到 ...

  2. EAP-MD5认证暴力破解工具eapmd5pass

    EAP-MD5认证暴力破解工具eapmd5pass   EAP-MD5是一种基于802.1x协议的认证机制.由于该机制存在漏洞,所以并不能保证数据安全.Kali Linux预置一个专用工具eapmd5 ...

  3. king's trouble II SCU - 4488

    Time Limit: 1000 MS Memory Limit: 131072 K Description Long time ago, a king occupied a vast territo ...

  4. 【BZOJ 1272】 1272: [BeiJingWc2008]Gate Of Babylon (容斥原理+卢卡斯定理)

    1272: [BeiJingWc2008]Gate Of Babylon Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 254  Solved: 12 ...

  5. 【BZOJ 2822】2822: [AHOI2012]树屋阶梯(卡特兰数+高精度)

    2822: [AHOI2012]树屋阶梯 Description 暑假期间,小龙报名了一个模拟野外生存作战训练班来锻炼体魄,训练的第一个晚上,教官就给他们出了个难题.由于地上露营湿气重,必须选择在高处 ...

  6. 【UOJ #105】【APIO2014】Beads and wires

    http://uoj.ac/problem/105 好神的dp啊. 确定一个点为根之后,蓝线只能是竖着的,不能横跨兄弟. 枚举每个点为根进行树形dp是\(O(n^2)\)的,\(f(x,0/1)\)表 ...

  7. 【最小生成树】BZOJ1682[Usaco2005 Mar]-Out of Hay 干草危机

    ...最小生成树裸题,9月最后一天刷水刷水. #include<iostream> #include<cstdio> #include<algorithm> usi ...

  8. [AtCoder-ARC073F]Many Moves

    题目大意: 有一排n个格子和2枚硬币. 现在有q次任务,每一次要你把其中一枚硬币移到x的位置上,移动1格的代价是1. 两枚硬币不能同时移动,任务必须按次序完成. 现在告诉你两枚硬币初始状态所在的位置a ...

  9. [CodeForces-178F]Representative Sampling

    题目大意: 给你n个字符串,要求从中选出k个字符串,使得字符串两两lcp之和最大. 思路: 动态规划. 首先将所有的字符串排序,求出相邻两个字符串的lcp长度(很显然,对于某一个字符串,和它lcp最长 ...

  10. Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟

    A. Gabriel and Caterpillar 题目连接: http://www.codeforces.com/contest/652/problem/A Description The 9-t ...