系统负载能达到多高?


12

每次我通过SSH登录到服务器时,都会向我闪烁一些服务器信息。IE IP地址,交换使用率,内存使用率等。它闪烁的另一件事是系统负载。现在大多数情况下,系统负载数小于0.10,但有时我看到它高达0.89(通常在启动时)。

这带来了一个问题,系统负载能走多高?例如,它是否有可能升至2.00甚至100.00?


小数部分表示CPU使用率,小数部分表示等待的进程数。喜欢的东西100.89会更有可能比100.00
Lekensteyn


@Caleb,我不同意它是重复的。这有可能是OP 打算问类似的东西,像“有多高系统负载走(现在仍然可接受运行)?”。但是正如所说的,这不是一个相同的问题。
独眼巨人

@Cyclops:如果OP不想询问服务器上可接受的级别,而只是问一个有关* nix系统如何工作的纯理论性问题,那不是这里的话题,不是迁移到unix.SE的候选人吗?
Caleb

Answers:


17

这带来了一个问题,系统负载能走多高?例如,它是否有可能升至2.00甚至100.00?

绝对。查看uptime手册页:

   System load averages is the average number of processes that are either
   in a runnable or uninterruptable state.  A process in a runnable  state
   is  either  using the CPU or waiting to use the CPU. A process in unin‐
   terruptable state is waiting for some I/O access, eg waiting for  disk.
   The  averages  are  taken over the three time intervals.  Load averages
   are not normalized for the number of CPUs in a system, so a load  aver‐
   age  of 1 means a single CPU system is loaded all the time while on a 4
   CPU system it means it was idle 75% of the time.

因此,如果您有很多等待运行的进程(或很多等待I / O的进程被阻塞),则平均负载将很高。 本文将详细讨论它,并提供指向其他资源的有用链接。

在未加载的系统上,平均负载通常在0 <= load_average <= n范围内,其中n是系统上的内核数。


1
是的,等待I / O是创建大量负载的简便方法:挂载nfs共享,打开nfs服务器,启动10.000个进程,尝试触摸nfs共享上的某些内容:繁荣,10.000的负载
Jens Timmerman

5

我已经看到有生命的系统受到了成千上万的攻击。平均负载是一种基于等待过程的相对度量,该等待过程是为了引起内核的注意并在CPU上获得一些时间而进行的竞争。如果机器被工作淹没或崩溃,则可能需要很长时间。

可接受的级别取决于计算机,内核数量,正在使用的内核作业调度程序的类型以及您期望它执行的作业。我有一些机器在〜10范围内非常满意,但是如果它们达到〜40-50则会停顿下来。其他人在2时明显变得迟钝,在10时将无法使用。

在启动过程中,负载会很高,这是很正常的,因为许多事情会立即完成,并且机器正在清盘。我认为〜1是相当正常的负载,可以在台式机Linux的启动过程中进入启动状态,然后在不执行任何操作的情况下降至〜0.1。


3
较小的修正:平均负载不是时间量度。这是等待的平均进程数。无法分辨出1)一个进程占用CPU,另一个进程从未占用CPU,以及2)两个进程不断地折衷之间的区别。它们都是1.0的负载。
Plutor 2011年

1
我已经在一个严重受骗的linux机器上看到了1500+。然后它死了。
汤姆·奥康纳

3

在Linux上,系统负载平均值由处于三种不同状态之一的进程组成。通常,可以说平均负载是等待CPU时间或消耗CPU时间的进程数量。平均负载概述中的三个值是过去一分钟,最近5分钟和最近15分钟的平均负载。

计入平均负载的进程的三种不同状态是:(1)在CPU上运行的进程,(2)等待CPU时间的进程,以及(3)处于不间断睡眠状态的进程。最后一个类别虽然不产生CPU负载,但可以显着提高平均系统负载。

例如,十几个正在等待非常繁忙或不可用的磁盘读取的进程将产生平均12的负载,因为这些进程处于不间断的睡眠状态,但是与此同时,您的CPU可以完全处于空闲状态。

因此,是的,平均负载可以轻松达到两位数。这有多严重取决于您的硬件。如果您有16个内核,那么有16个进程等待CPU时间也就算不错了。在单核计算机上,让3个进程等待CPU时间可能非常糟糕。


我认为仅当它们是受CPU限制的进程时,这才是不好的,这是罕见的。大多数大型进程都受IO限制或/和RAM限制。
彼得-恢复莫妮卡

3

使一个简单的C进程在10000个线程中运行无限循环。给它一个非常低的优先级(+20)。您的负载将为10000,而系统仍将可用。它将仅使用很少的RAM(最多几兆字节)。

尽管这是一种非常不常见的配置,但在实际系统中您不会找到它。

系统负载仅意味着等待cpu时隙的平均进程数,而不是更少。这是有关解释系统负载正确方法的另一个答案。

在日常经验中,超过30+的负载意味着大部分问题。



1

当您反复启动立即阻塞的进程时,负载将与您设法启动的进程数量一样高。假设您有足够的RAM可供系统不交换,则系统甚至可以保持响应状态,因为阻塞进程造成的负载并没有真正的危害。


1

我已经看到一台服务器在> 200的负载下运行。

我会压力测试,看看。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.