linux系统平均价格,分析linux系统的CPU平均负载情况(load average)

看到别人写的文章,描述的很详情,现转载给大家看看。

一、如何理解CPU负载情况

CPU负载情况定义为在特定时间间隔内运行队列中的进程数量的平均值,换句话说就是该段时间内正在使用和等待使用CPU的平均任务数。CPU的负载越大,代表CPU必须要在不同的工作之间进行频繁的工作切换。

请注意:它与CPU使用情况(CPU使用率)不是同一个概念。CPU使用率指的是CPU运行所有程序的耗时占所有时间的比例,它反映的是当前CPU的繁忙程度。举个简单例子,在单处理器中,线程1先工作10ms,线程2再工作30ms,之后CPU空闲60ms。则此100ms时间段内,CPU的利用率就是40%。如果CPU使用率持续居高,那么就需要考虑CPU是否已经处于超负荷运作,长期超负荷运作对于机器本身来说是一种损害,因此必须将CPU的利用率控制在一定的比例下,以保证机器的正常运作。

但是,反过来说,CPU使用率高,并不意味着CPU负载情况就一定大。举例来说:如果我有一个程序需要一直使用CPU的运算功能,那么此时CPU的使用率可能达到100%,但是CPU的负载情况则是趋近于“1”,因为CPU仅负责一个工作嘛!此时的CPU虽然很忙,但是不会卡,你想要再增加一个程序(比如新开一个浏览器窗口)的话,应该问题不大,系统立即就可以响应你的操作。而如果同时执行两个这样的程序呢?CPU的使用率还是100%,但是负载情况则变成2了。再进一步的,如果同时执行10个这样的程序,CPU的使用率依然是100%,可是负载情况变成了10,此时你想要再增加一个程序(比如新开一个浏览器窗口),则系统会变得非常卡,甚至死机!

以上分析可以看出,一台机器很有可能处于低使用率、高负载情况的情况,因此看机器的繁忙程度应该结合两者,从实际的使用情况观察。

可能上面的解释不是很直观,没怎么听懂。下面利用一个网上通用的比喻来形容一下【原文参见Understanding Linux CPU Load】,我添加了一些我自己的理解,让文字看起来更形象一些,不知道有没有形容不当的地方,若有发现还请不吝指正。

首先,假设最简单的情况,你的电脑只有一个CPU,所有的运算都必须由这个CPU来完成。以下所有的分析都是基于这个前提的,请注意!

然后,我们把这个CPU想象成一座大桥,桥上只有一根车道,所有车辆都必须从这根车道上通过(很显然,这座桥只能单向通行)。

系统负荷为0,意味着大桥上一辆车也没有。一辆新来的车辆想要驶入,分分钟就进来了,完全没有问题(类比成你对电脑的操作,就好比你此时要新开一个音乐播放器,一点击图标,播放器立即就启动了,完全无需等待,响应速度极快,很爽);

系统负荷为0.5,意味着大桥一半的路段有车。新来的车辆想要驶入,依然无需等待,瞬间进入(类比成新开音乐播放器的操作就是,一点击图标,播放器很快就启动了,时延几乎可以忽略);

系统负荷为1.0,意味着大桥的所有路段都有车,也就是说大桥已经"满"了。但是必须注意的是,直到此时大桥还是能顺畅通行的。同样驶来了一辆新的车辆,此时它没法瞬间驶入,而是必须在整个车流队伍的末端进行排队等候,但是好在车流很顺畅,队伍排一会就轮到它了(类比成新开音乐播放器的操作就是,点击图标之后,过了一小会播放器才启动,让你稍稍的等待了一小会,但是还在你可以接受的范围之内);

系统负荷为1.7,意味着车辆太多了,大桥已经被占满了,后面等着上桥的车辆为桥面车辆的70%。同样还是那辆新的车辆要驶入,此时它要排队的时间就明显边长了,而且很可能存在堵车的风险(类比成新开音乐播放器的操作就是,点击图标之后,过了好一会,播放器才开始启动,而且启动之后还很卡,半天才响应过来,让你觉得有点郁闷+不爽了);

以此类推,系统负荷2.0时,意味着等待上桥的车辆与桥面的车辆一样多,新来的车辆想要驶入的等候时间进一步变长;系统负荷3.0时,意味着等待上桥的车辆是桥面车辆的2倍。总之,当系统负荷大于1,后面的车辆就必须等待了;系统负荷越大,过桥就必须等得越久,直到最后可能就导致车流完全卡死,新来的车辆根本无法驶入了(类比成新开音乐播放器的操作就是,点击图标之后,过了很久很久,播放器完全没有反应。你感觉似乎等了好几分钟了,实在是不耐烦了,于是再多点几下,结果桌面反而卡死了,又隔了半天,系统居然弹了一个“播放器没有响应,是否要结束任务?”的对话框出来,你毫不犹豫点击结束任务,又是半天没有动静,似乎过了一个世纪之后,电脑完全卡死了,鼠标和键盘都不能用了,天地间只剩一个你在崩溃中重启你的电脑…)。

CPU的系统负荷,基本上等同于上面的类比。大桥的通行能力,就是CPU的最大工作量;桥梁上的车辆,就是一个个等待CPU处理的进程(process)。

如果CPU每分钟最多处理100个进程,那么系统负荷0.2意味着CPU在这1分钟里只处理20个进程;系统负荷1.0意味着CPU在这1分钟里正好处理100个进程;系统负荷1.7意味着除了CPU正在处理的100个进程以外,还有70个进程正排队等着CPU处理。

从理论上来说,为了电脑顺畅运行,系统负荷最好不要超过1.0,这样就没有进程需要等待了,所有进程都能第一时间得到处理。很显然,1.0是一个关键值,超过这个值,系统就不在最佳状态了,你要动手干预了。

当然,上面所有的案例中,我们假设你的电脑都只有1个CPU。如果你的电脑装了2个CPU(或者是装了一个双核的CPU),会发生什么情况呢?

2个CPU(或者双核CPU),意味着电脑的处理能力翻了一倍,能够同时处理的进程数量也翻了一倍。还是用大桥来类比,两个CPU就意味着大桥有两根车道了,通车能力翻倍了。所以,2个CPU表明系统负荷可以达到2.0,此时每个CPU都达到100%的工作量。推广开来,n个CPU核心的电脑,可接受的系统负荷最大为n.0。

二、如何查看CPU负载情况

首先要看下系统的CPU核心总数,这是前提,单核CPU与多核CPU的负载情况标准是完全不一样的。使用以下命令查看CPU核心数:

leon@Ubuntu:~$ grep -c 'model name' /proc/cpuinfo

6

然后就可以查看CPU的负载情况了。直接使用uptime命令就可以看到了:

leon@Ubuntu:~$ uptime

20:21:34 up 11:30, 1 user, load average: 0.00, 0.00, 0.00

load average后面跟的就是CPU的负载值了,这是三个平均值,分别代表的是系统在最近1分钟、5分钟、15分钟内,CPU的平均负载情况(也可以说是平均进程数)。

另外,也可以通过/proc/loadavg文件来查看:

leon@Ubuntu:~$ cat /proc/loadavg

0.98 0.75 0.57 2/422 2879

前三个数字大家都知道,是1、5、15分钟内的负载情况。后面两个呢,第一个(2/422)的分子2是正在运行的进程数,分母422是进程总数;后一个2879是最近运行的进程ID号。

当然,还可以使用下面更专业的top命令进行更加详细的分析:

leon@Ubuntu:~$ top

top - 20:47:24 up 11:56, 1 user, load average: 0.00, 0.00, 0.00

Tasks: 198 total, 1 running, 144 sleeping, 0 stopped, 1 zombie

%Cpu(s): 0.2 us, 0.1 sy, 0.0 ni, 98.2 id, 1.5 wa, 0.0 hi, 0.0 si, 0.0 st

KiB Mem : 3072672 total, 2074460 free, 553804 used, 444408 buff/cache

KiB Swap: 998396 total, 839408 free, 158988 used. 2317720 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

906 root 20 0 585180 100336 18024 S 1.3 3.3 3:12.98 Xorg

2404 leon 20 0 1369504 85028 41244 S 1.0 2.8 4:24.27 compiz

2620 leon 20 0 617872 31252 20524 S 0.7 1.0 0:08.99 gnome-term+

2122 leon 20 0 403148 1192 816 S 0.3 0.0 0:00.83 indicator-+

1 root 20 0 185220 3916 2464 S 0.0 0.1 0:02.59 systemd

2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd

4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:+

6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_+

7 root 20 0 0 0 0 S 0.0 0.0 0:00.16 ksoftirqd/0

三、如何解读CPU负载情况

可以看到,"load average"一共返回三个值,这是3个平均值,分别代表的是系统在最近1分钟、5分钟、15分钟内,CPU的平均负载情况。这三个值落在什么范围内才算合理,超过什么范围会造成系统异常?在实际应用中怎么解读呢?哪个才是最准确的值呢?

首先我们分析一下这几个值的取值范围。拿单核CPU来举例,根据网上的经验值,一般将分水岭设成0.7。经验法则是这样的:

当系统负荷持续小于0.7(指的是调整CPU核心数之后的相对值),表明系统非常健康,任务处理的很及时,效率很高,基本没有时延存在。

当系统负荷持续大于0.7(指的是调整CPU核心数之后的相对值),表明系统有点忙了,你必须开始调查了,问题出在哪里,防止情况恶化。

当系统负荷持续大于1.0(指的是调整CPU核心数之后的相对值),表明系统很忙了,你必须动手寻找解决办法,想办法把这个值降下来。

当系统负荷持续大于3.0(指的是调整CPU核心数之后的相对值),表明系统非常非常忙了,甚至影响到正常的功能了,你得赶紧处理了;

当系统负荷持续达到5.0(指的是调整CPU核心数之后的相对值),就表明你的系统有极其严重的问题,长时间没有响应,或者接近死机了。你不应该让系统达到这个值。

然后我们来解读一下这三个值的重要级别。在实际的使用中,我们一般认为,如果只有1分钟的系统负荷过大,其他两个时间段都很正常(指的是调整CPU核心数之后的相对值),这表明只是暂时现象,问题不大。如果连15分钟的平均系统负荷也偏大了(指的是调整CPU核心数之后的相对值),表明问题持续存在,则要引起重视了。所以,应该主要观察"15分钟系统负荷",将它作为电脑正常运行的指标

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值