系统负载是否与 CPU 使用率直接相关?

系统负载是否与 CPU 使用率直接相关?

这是一台双核机器,负载约为 24,但 CPU 使用率在 60-80% 之间波动,从未达到 100%,那么怎么会有那么多进程在等待呢?I/O 几乎为零,因为所有内容都是从内存数据库读取的,而网络仅使用千兆连接的 7mbit 左右。添加额外的核心会减少负载吗?还是 CPU 不是问题,因为它甚至还没有达到峰值?

答案1

不。

尝试只运行 Seti @ Home(或其当前版本),您会看到服务器负载固定在 1.0,尽管 CPU 使用率固定在 100%。

来自 UPTIME(1) 手册页:

系统负载平均值是处于可运行或不可中断状态的进程的平均数量。处于可运行状态的进程要么正在使用 CPU,要么正在等待使用 CPU。处于不可中断状态的进程正在等待某些 I/O 访问,例如等待磁盘。平均值是在三个时间间隔内取的。负载平均值并未根据系统中的 CPU 数量进行标准化,因此负载平均值为 1 表示单 CPU 系统始终处于加载状态,而在 4 CPU 系统上则表示 75% 的时间处于空闲状态。

例如,我们有一台服务器,它只运行 Spamassassin,配备两个 Xeon CPU(总共 4 个虚拟 CPU)。它有时会达到 100% 的 CPU 利用率,但更多时候它会通过读取和写入贝叶斯数据库来使用大量磁盘 IO。因此,系统负载通常非常高,约为 20-40,因为有许多进程正在等待磁盘。

答案2

平均负载是处于可运行状态的进程数:在 top 中按“i”将其限制为这些进程。这包括(R)正在运行和(D)等待磁盘的进程。它真的没有执行任何 IO 吗?它没有进入交换区吗?

答案3

这些进程中是否有相当一部分占用大量内存?因为您可能会看到大量缓存未命中的影响。

内存很慢,所以 CPU 有一个(或更常见的是几级)缓存。现在,如果进程 A 在 CPU 上,并且用自己的内存加载了大部分缓存,那么进程 B 就会出现,并希望用它是内存中会发生一系列等待,导致 CPU 减少。然后,迟早会出现进程 A,然后你又得再经历一遍……

相关内容