Load Average知识串烧

最近在不少关注的技术博客上都发现有专门讲述Load Average的文章,可见这个值对于系统运行情况的重要性。前一个Linux System and Performance Monitoring系列中的CPU篇,主要是介绍查看CPU 利用率的方法和意义。那么为何要多出一个Load Average的参数,它的意义在何处呢?

      系统平均负载(load average)被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中: 
– 它没有在等待I/O操作的结果 
– 它没有主动进入等待状态(也就是没有调用’wait’) 
– 没有被停止(例如:等待终止)

看到上面的文字,“哦”一声,然后呢,估计过两天这个概念就忘了。《理解 Linux 的处理器负载均值(翻译)》做了一个详尽的解释。并最终给出了一个判断此值是否在合理范围内的一个法则:

    • “有多少核心即为有多少负荷”法则: 在多核处理中,你的系统均值不应该高于处理器核心的总数量。
    • “核心的核心”法则: 核心分布在分别几个单个物理处理中并不重要,其实两颗四核的处理器 等于 四个双核处理器 等于 八个单处理器。所以,它应该有八个处理器内核。

理解了它的意义,那它的实际作用何在呢?我们不是已经有了CPU负载参数么?

      《理解Load Average做好压力测试》这篇文章解答了我的疑惑。

压力测试不仅需要对业务场景的并发用户等压力参数作模拟,同时也需要在压力测试过程中随时关注机器的性能情况,来确保压力测试的有效性。当服务器长期处于一种超负荷的情况下运行,所能接收的压力并不是我们所认为的可接受的压力。就好比项目经理在给一个人估工作量的时候,每天都让这个人工作12个小时,那么所制定的项目计划就不是一个合理的计划,那个人迟早会垮掉,而影响整体的项目进度。

CPU利用率在过去常常被我们这些外行认为是判断机器是否已经到了满负荷的一个标准,看到50%-60%的使用率就认为机器就已经压到了临界了。CPU利用率,顾名思义就是对于CPU的使用状况,这是对一个时间段内CPU使用状况的统计,通过这个指标可以看出在某一个时间段内CPU被占用的情况,如果被占用时间很高,那么就需要考虑CPU是否已经处于超负荷运作,长期超负荷运作对于机器本身来说是一种损害,因此必须将CPU的利用率控制在一定的比例下,以保证机器的正常运作。

Load Average是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。为什么要统计这个信息,这个信息的对于压力测试的影响究竟是怎么样的,那就通过一个类比来解释CPU利用率和Load Average的区别以及对于压力测试的指导意义。

CPU负载很低的情况下,不一定代表CPU不存在瓶颈,

低利用率的情况下是否会有高Load Average的情况产生呢?理解占有时间和使用时间就可以知道,当分配时间片以后,是否使用完全取决于使用者,因此完全可能出现低利用率高Load Average的情况。由此来看,仅仅从CPU的使用率来判断CPU是否处于一种超负荷的工作状态还是不够的,必须结合Load Average来全局的看CPU的使用情况和申请情况。

到此为止应该对Load Average有了全面的理解,不过你想更深入学习的话,还有UNIX® Load Average这个系列的文章,译言上有了第一部分的翻译《UNIX® 的平均负载 第一部分 :如何工作》。后面几部分,还是要辛苦点看英文了。

别的一些博客提到的知识基本已被在上述内容覆盖,所以就不累述了。

你可能感兴趣的:(工作,linux,unix,测试,System,performance)