【译】了解Linux CPU负载-您何时应该担心?

2020-06-28 11:12:28 浏览数 (1)

作 者:haifeiWu 原文链接:https://www.hchstudio.cn/article/2020/ce5a/

您可能已经熟悉Linux平均负载。 平均负载是 uptimetop 命令显示的三个数字-它们看起来像这样:

代码语言:javascript复制
load average: 0.09, 0.05, 0.01

大多数人都对负载平均值的含义有所了解:三个数字代表了较长时间段内的平均值(一分钟,五分钟和十五分钟的平均值),而较低的数字更好。 较高的数字表示问题或机器过载。 但是,门槛是多少? 什么构成“好”和“坏”负载平均值? 什么时候应该关注负载平均值,什么时候应该地修复它?

首先,简要了解负载平均值的含义。 我们将从最简单的情况开始:一台带有一个单核处理器的机器。

The traffic analogy

单核CPU就像一条流量通道。 想象您是一名桥梁操作员…有时您的桥梁太忙了,有汽车排成一行。 您想让人们知道桥上的交通如何。 一个体面的指标是在特定时间等待多少辆汽车。 如果没有汽车在等,传入的驾驶员知道他们可以马上驶过。 如果对汽车进行了备份,则驾驶员知道他们要耽误时间。

那么,网桥运营商,您将使用哪种编号系统? 怎么样:

  • 0.00表示桥上根本没有流量。 实际上,介于0.00和1.00之间表示没有备用轮胎,到达的汽车将继续行驶。
  • 1.00表示桥刚好处于满负荷状态。 一切都还不错,但是如果流量增加一点,事情就会变慢。
  • 超过1.00表示有备份。 多少? 那么,2.00意味着总共有两个车道的汽车价值-桥上一个车道的价值,一个车道的等待价值。 3.00表示总共有3条车道-桥上1条车道值得等待。 等等。

这基本上是CPU负载。 “汽车”是指使用CPU时间(“过桥”)或排队使用CPU的进程。 Unix将其称为运行队列长度:当前正在运行的进程数与正在等待(排队)的进程数之和。

就像桥梁操作员一样,您希望您的汽车/过程永远不会等待。 因此,理想情况下,您的CPU负载应保持在1.00以下。 就像桥接运算符一样,如果您暂时获得高于1.00的峰值,您仍然可以…但是当您始终高于1.00时,您就需要担心。

So you’re saying the ideal load is 1.00?

好吧,不完全是。 负载为1.00的问题是您没有净空。 实际上,许多系统管理员会在0.70处画一条线:

  • “需要研究”的经验法则:0.70如果平均负载保持在> 0.70以上,那么应该在情况变得更糟之前进行调查。
  • “立即解决”的经验法则是:1.00。 如果平均负载保持在1.00以上,请查找问题并立即解决。 否则,您将在半夜醒来,这将不会很有趣。
  • “ Arrgh,这是WTF 3AM?” 经验法则:5.0。 如果平均负载高于5.00,则可能会遇到严重的麻烦,盒子要么挂着要么减速,这将(莫名其妙地)发生在最坏的时间,例如深夜或当您在场时 在会议上。 不要让它到达那里。

What about Multi-processors? My load says 3.00, but things are running fine!

有一个四处理器系统? 3.00负载仍然很健康。

在多处理器系统上,负载是相对于可用处理器核心数量的。 在单核系统上,“ 100%利用率”标记是1.00,在双核上是2.00,在四核上是4.00,依此类推。

如果再回到桥梁类比,“ 1.00”实际上意味着“一个车道的通行价值”。 在单车道的桥上,这意味着它已被填满。 在两层桥梁上,负载为1.00表示其容量为50%时-只有一个车道已满,因此还有另一个完整车道可以填充。

与CPU相同:1.00的负载是单核机箱上的CPU利用率为100%。 在双核计算机上,负载为2.00就是100%CPU使用率。

Multicore vs. multiprocessor

当我们讨论主题时,让我们谈谈多核与多处理器。 出于性能目的,具有单个双核处理器的计算机是否基本上等同于具有两个具有一个内核的处理器的计算机? 是。 大致。 关于缓存的数量,处理器之间的进程切换频率等,这里有很多微妙之处。尽管有这些细微之处,但为了确定CPU负载值,内核总数是重要的,无论如何 这些内核分布在许多物理处理器上。

这引出了两个新的经验法则:

-“核数=最大负载”经验法则:在多核系统上,您的负载不应超过可用核数。

-“核心就是核心”经验法则:核心在CPU上的分布方式无关紧要。 两个四核==四个双核==八个单核。 这些都是八个核心。

Bringing It Home

让我们看一下 uptime 的平均负载输出:

代码语言:javascript复制
~ $ uptime
23:05 up 14 days, 6:08, 7 users, load averages: 0.65 0.42 0.36

这是在双核CPU上,因此我们有很大的余量。在负载达到并保持在1.7左右之前,我什至不会考虑它。

现在,那三个数字呢? 0.65是最后一分钟的平均值,0.42是最近五分钟的平均值,而0.36是最近15分钟的平均值。这使我们想到了一个问题:

我应该观察哪个平均值? 1、5或15分钟?

对于我们已经讨论过的数字(1.00 =立即修复,依此类推),您应该查看5或15分钟的平均值。坦白说,如果您的广告活动平均在一分钟内达到1.0以上的峰值,您还是可以的。这是15分钟平均值超过1.0并保持在该水平上的时间。 (显然,据我们了解,将这些数字调整为系统具有的处理器核心数量)。

因此,核的数量对于解释平均负载很重要……我如何知道我的系统有多少个核?

cat / proc / cpuinfo可获取系统中每个处理器的信息。注意:在OSX上不可用,但Google可以选择。要获得一个计数,请通过grep和单词计数运行它:grep’模型名称’/ proc / cpuinfo | wc -l

参考文档

原文链接

Wikipedia - A good, brief explanation of Load Average

Linux Journal - very well-written article

0 人点赞