Linux Load Average

17 Mar 2025 | 6 分钟阅读

如果我们使用任何 Linux 服务器,我们都会熟悉系统负载或负载平均这个术语。衡量系统负载或负载平均是了解我们的服务器如何工作的典型方法;如果过载,我们需要优化或终止消耗大量资源的进程,或者提供其他资源来平衡工作负载。

那么问题来了,我们如何确定我们的服务器是否有足够的负载能力,以及何时必须引起警惕?

在本文中,我们将讨论典型的 Linux 系统管理操作之一——关于负载平均和 CPU/系统负载的性能监控。

在我们讨论任何内容之前,让我们了解每个类 Unix 系统中的这两个基本术语。

  1. 负载平均 (Load average): 负载平均是指在提供的 15 分钟、5 分钟和 1 分钟时间内测量的平均系统负载。
  2. CPU 负载/系统负载 (CPU load/System load): CPU 负载/系统负载是 Linux 系统中 CPU 的过度或不足利用的计算;正在等待状态或正在通过 CPU 运行的进程。

在 Linux 中,负载平均在技术上被认为是其执行队列中被标记为不可中断或正在运行的进程的平均值。

注意

  • 每个(如果不是全部)由类 Unix 或 Linux 系统驱动的系统都会在某个地方为用户显示负载平均值。
  • 一个完全空闲的 Linux 系统(空闲)可能负载平均为零,不包括空闲进程。
  • 几乎所有的类 Unix 系统都只计算等待或运行状态的进程。但 Linux 的情况并非如此,它包含处于不可中断睡眠状态的进程;这些进程正在等待系统的其他资源,例如磁盘 I/O 等。

负载平均介绍

负载平均可以定义为 Linux 服务器在指定时间内的平均系统负载。此外,它是服务器的 CPU 需求,包括等待线程和运行线程的总和。

uptime 或 top 命令通常会提供我们服务器的负载平均,结果如下所示:

这些数字是过去十五分钟、五分钟和一分钟的系统负载平均值。在继续讨论如何衡量系统负载平均的输出以及所有这些值意味着什么之前,我们应该举一个简单的例子,即一台使用单核处理器的服务器。

负载分解

一台使用单核处理器的服务器就像杂货店里等待结账的顾客。通常,在高峰时段会有很长的队伍,所有人的等待时间都很长。

如果我们想节省等待时间,一个重要的指标是特定时间内的排队人数。当没有人排队时,等待时间为零。此外,当顾客排成长队时,等待时间会很高。

将这个应用到系统负载结果 (0.5, 1.5, 3.0)

  • 0.5 表示柜台的等待时间(最少)。在 0.00 到 1.0 之间我们不必担心。我们的服务器是安全的。
  • 1.5 表示队列正在填满。当平均值升高时,事情将开始变慢。
  • 3.00 表示有很长的队伍在等待,需要额外的柜台/资源来更快地清空队列。

多处理器和多核处理器来救援

相对而言,一台拥有四核处理器和四个处理器的服务器与一台处理器相同。多处理器和多核之间的主要区别在于,前者定义了一个具有多个核心的 CPU。而后者定义了多个 CPU。两个双核等同于一个四核,等同于四个独立的核心。

系统负载与服务器中存在的核数相对应,而不是它们如何在 CPU 上分布。它表示单个核心的最大利用率范围是 0 到 1,双核是 0 到 2,四核是 0 到 4,八核是 0 到 8,以此类推。

多处理器 (Multi-processor): 指在一个计算机系统中可以安装两个以上的物理 CPU。

多核处理器 (Multi-core processor): 指一个物理 CPU。它至少有两个独立的核可以并行执行。

此外,还有一项处理器技术,最初由Intel推出,用于改进并行计算。它被称为超线程 (hyper threading)

在超线程下,一个物理 CPU 核心在操作系统看来是两个逻辑 CPU 核心。然而,实际上只有一个物理硬件单元。

注意:一个 CPU 核心一次只能执行一个任务。因此,超线程、多核 CPU、多处理器/CPU 等技术应运而生。

通过多个 CPU 可以同时运行各种程序。当今 Intel 的 CPU 同时使用了超线程和多核技术。

我们可以使用 lspu 或 nproc 命令来查找系统中存在的处理单元数量。


Linux Load Average

Linux Load Average

监控系统负载/负载平均 (Site24*7)

为更高的负载值增加资源可能会增加我们的基础设施成本。最好有效地处理负载并管理最佳水平,以避免服务器性能下降问题。在 Linux 中,Site24*7 监控功能监控系统负载,并提供 60 多个性能指标,并以易于理解和直观的图形显示 15 分钟、5 分钟和 1 分钟的平均值。

此外,当出现任何违规情况时,我们可以接收通知并设置阈值。Site24*7 提供了一个 IT 自动化套件用于故障排除(自动)。

例如,如果双核处理器的负载平均阈值设置为 2.90,我们可以在阈值被突破时添加服务器命令并上传一个服务器脚本来终止 CPU(最高)利用率最高的进程。

通过这种方式,问题可以得到解决,并且MTTR(平均修复时间)大大缩短。

如何计算负载平均

有几种方法可以监控系统的负载平均,包括uptime命令,它会显示系统运行了多长时间、总用户数以及负载平均值。


Linux Load Average

这些数字从左到右依次计算。高负载平均表明系统过载。这意味着许多进程因等待 CPU 时间而延迟。

Top 命令


Linux Load Average

此命令用于显示 Linux 的正在运行的进程。

Glances 工具

这是一个 Linux 系统监控工具。

其他系统性能命令

以下是一些用于评估系统性能的命令:

  1. vmstat: 此命令将报告有关阻塞或可运行进程、CPU、陷阱、块 I/O、分页和内存的详细信息。
  2. htop: 这是一个交互式进程查看器。
  3. dstat: 它有助于关联进程、CPU 活动、陷阱、块 I/O、分页和内存的所有可用资源信息。
  4. iftop: 这是一个交互式的每接口网络流量查看器。
  5. nethogs: 这是一个交互式的每进程网络流量查看器。
  6. iotop: 这是一个交互式 I/O 查看器。
  7. iostat: 用于存储 I/O 统计信息。
  8. netstat: 用于网络统计信息。
  9. mpstat: 用于 CPU 统计信息。
  10. tload: 在终端上显示负载平均的图表。
  11. xload: 在 X 上显示负载平均的图表。
  12. /proc/loadavg: 这是一个包含负载平均的文本文件。

CPU 利用率 vs CPU 负载

Ferrari 等人的对不同负载指标的研究表明,基于 CPU 队列长度的 CPU 负载信息在负载均衡过程中比 CPU 利用率表现更好。

CPU 队列长度表现更好的原因可能在于,如果主机负载很重,CPU 利用率会接近 100%,而这无法反映负载量的大小。相反,CPU 队列的长度可以直接反映 CPU 上的负载量。

例如,两个系统(一个队列中有 3 个进程,一个有 6 个进程)的利用率可能都接近 100%。然而,它们显然是不同的。

总结

增加核心数可能会加速我们的服务器性能,但也可能增加我们的基础设施支出。因此,持续监控系统负载以有效管理可用设置可能是一个不错的选择。

此外,Site24*7 服务器监控不仅监控系统负载,还提供补充性故障排除工具,以便在系统负载过高影响服务器性能之前采取行动。


下一主题Linux 防火墙