每次我通过 SSH 登录服务器时,它都会闪现一些服务器信息。例如 IP 地址、交换使用情况、内存使用情况等。它闪现的其他信息之一是系统负载。现在大多数时候系统负载数字小于 0.10,但其他时候我看到它上升到 0.89(通常在启动时)。
这就引出了一个问题:系统负载能达到多高?例如,它有可能达到 2.00 甚至 100.00 吗?
答案1
这就引出了一个问题:系统负载能达到多高?例如,它有可能达到 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是您的系统上的核心数。
答案2
我见过运行中的系统负载达到数千。平均负载是一种相对测量方法,基于等待进程来衡量有多少竞争者争取内核的关注并获得 CPU 时间。如果机器被作业淹没或崩溃,则可能需要很长时间。
可接受的级别取决于机器、内核数量、使用的内核作业调度程序类型以及您期望它执行的作业。我有一些机器在 ~10 范围内表现良好,但如果达到 ~40-50 就会陷入停滞。其他机器在 2 时会明显滞后,在 10 时将无法使用。
由于许多事情同时进行,并且机器正在加速,因此启动期间负载较高并不罕见。我认为对于桌面 Linux 来说,启动期间负载达到 ~1 是相当正常的,然后在不执行任何操作时稳定在 ~0.1。
答案3
在 Linux 上,系统负载平均值由三种不同状态的进程组成。一般来说,可以说负载平均值是等待 CPU 时间或消耗 CPU 时间的进程数量。负载平均值概览中的三个值分别是过去一分钟、过去 5 分钟和过去 15 分钟的负载平均值。
计入平均负载的进程的三种不同状态为:(1) 在 CPU 上运行的进程、(2) 等待 CPU 时间的进程和 (3) 处于不间断睡眠状态的进程。最后一类虽然不会产生 CPU 负载,但可以显著增加系统平均负载。
例如,十几个等待从非常繁忙或不可用的磁盘读取的进程将产生 12 的平均负载,因为进程处于不间断的睡眠状态,但您的 CPU 在此期间可以完全空闲。
所以,是的,平均负载很容易上升到两位数。这有多糟糕取决于你的硬件。如果你有 16 个核心,那么有 16 个进程等待 CPU 时间还不算太糟糕。在单核机器上,有 3 个进程等待 CPU 时间就非常糟糕了。
答案4
终止一个消耗旧式 450Mhz CPU 的进程几秒钟后: