Browse Month: 五月 2019

理解Linux 系统负载

视频讲解linux 系统负载,当我们电脑很卡的时候,系统的负载肯定也很高,那怎么衡量Linux 系统负载,又应该怎么理解系统负载?

你好,我是好刚,这一讲我们来了解Linux 系统负载。如果你的电脑很慢,你或许想查看一下,它的工作负载是不是很高。这里我将通过一座大桥通车能力的类比,带你理解Linux 系统负载。

先说明视频内容来源,这期视频来源于阮一峰老师的博客《理解Linux 系统负载》,这是阮老师的博客地址。

1. 查看系统负载

先来看看怎么查看系统负载。在Linux 系统中,可以使用uptime 命令,在终端输入 uptime ,会看到这么一行信息:

这里后半部分 load average 就是系统的平均负载,这有三个数字,分别是1分钟、5分钟和15分的系统平均负载。当CPU 完全空闲的时候,平均负载为0,当CPU 工作量饱和的时候平均负载为1.0,数值越低说明电脑的工作量越小。

这里有3 个数字,它们的值可能不一样,要从这3 个数字判断出系统负载到底是大还是小,我们还需要理解系统负载的真正含义。

2. 理解负载

2.1 单个CPU 负载

首先假设最简单的情况,就是你的电脑只有一个CPU,并且这个CPU 是单核的,所有的运算都必须由这个CPU 完成。

我们可以把这个CPU 想象成一座大桥,桥上只有一条车道,所有车辆都必须从这条车道上通过,车道上一次最多能跑10 辆车。

  • 如果系统负载为0,就相当于大桥上一辆车也没有。
  • 如果系统负载为0.5,意味着大桥一半的路段有车,车道上有5 辆车。
  • 如果系统负载为1.0,那意味着大桥的所有路段都有车,大桥已经”满”了。但是要注意这个时候大桥还是能顺畅通行的。
  • 继续增加,如果系统负载为1.7,这就意味着车辆太多了,大桥已经被占满,车道上有10 辆车,并且还有7 辆车等着上桥。等待的车辆数量是桥面上正在通行车辆的70%。
  • 当系统负载大于1.0,后面的车辆就必须等待,系统负载越大,等待的车辆越多,那就必须等待越久的时间才能过桥。

回到CPU 的负载,这里大桥的通行能力,就是CPU 的最大工作量;桥梁上的车辆,就是一个个等待CPU处理的进程(process)。如果CPU 1分钟最多处理100 个进程。

  • 那当系统负载为 0.5,意味着CPU 在这1分钟里只处理50个进程
  • 如果系统负载1.0,意味着CPU在这1分钟里正好处理100个进程
  • 如果系统负载1.7,意味着除了CPU正在处理的100个进程以外,还有70个进程正排队等着CPU处理。

理解了系统负载我们能轻易得出结论,为了电脑顺畅运行,系统负载最好不要超过1.0,这样就没有进程需要等待,所有进程都能第一时间得到处理。

这里1.0 是一个关键值,超过这个值,系统就不在最佳工作状态。不过1.0 可不是系统负载的理想值,工作中我们需要留一点余地,一般经验是这样的:

  • 当系统负载持续大于0.7,就必须开始调查,看问题出在哪里,防止情况恶化。
  • 当系统负载持续大于1.0,你必须动手寻找解决办法,把这个值降下来,一般是kill 进程。
  • 当系统负载达到5.0,表明你的系统有很严重的问题,基本是死机状态了。

2.2 多CPU 与多核

这里的讲解是假设你的电脑只有1 个CPU。再来看看如果你的电脑装了2个CPU,会发生什么情况呢?

2个CPU,意味着电脑的处理能力翻了一倍,能够同时处理的进程数量也翻了一倍。还是用大桥来类比的话,两个CPU 就意味着大桥有两条车道,通车能力翻倍了。

如果是1 个CPU,你的系统负载可以达到1.0,2个CPU 你的系统负载可以达到2.0,这个时候每个CPU都达到100% 的工作量。推广开来,n个CPU的电脑,可接受的系统负载最大为n * 1.0。

现在个人电脑大多是一个CPU,CPU内部再包含多个CPU 核心,这被称为多核CPU。多核CPU 与多CPU 效果是类似的,每增加一个核心相当于大桥增加了一条车道。

所以我们在考虑系统负载的时候,必须考虑这台电脑有几个CPU、每个CPU有几个核心。把系统负载除以总的核心数,只要每个核心的负载小于1.0,就表明电脑是正常运行状态。

3. 最佳观察时长

理解了系统负载的含义,再来看看对于 “load average” 返回的三个平均值,我们应该参考哪个值?

先用负载数除以电脑上CPU 的总核心数得到平均每个核心的负载,如果只有1 分钟的系统平均负载大于1.0,其他两个时间段都小于1.0,这表明高负载只是暂时现象,问题不大。如果15分钟内,系统平均负载都大于1.0 那就说明问题是持续存在的,需要赶紧解决。所以我们平时观察时,应该主要观察”15分钟系统负载”。

小结

最后小结,这一讲我们了解了Linux 系统平均负载,知道负载与CPU 个数和CPU 核心数有关,只要每个核心的平均负载数小于1.0 就说明所有进程都能在第一时间处理,系统运行顺畅。通过 uptime 命令可以查看负载数值,负载有3 个数值,分别表示1分钟,5分钟和15分钟的负载,我们应该主要关注15 分钟的负载数值。

这就是这一讲的全部内容,我是好刚,如果讲解对你有所帮助,也请你帮忙关注和转发。

最后内容声明,这期视频来源于阮一峰老师的博客《理解Linux 系统负载》,这是博客地址。阮老师写了很多通俗易通的技术文章,我想你也一定读过阮老师的博客,这是阮老师的微信公众号,欢迎您订阅。

好刚编程,让技术更好懂

参考文献

  1. 理解Linux 系统负载

©2019 | 鄂ICP备18002823号-2 |鄂公网安备 42018502000885号