平均负载如何与现代 CPU 配合使用?

平均负载如何与现代 CPU 配合使用?

我对平均负载的理解让我对我当前的系统感到非常震惊。我的工作站中的 CPU 是启用了超线程的 i7,可cat /proc/cpuinfo产生 4 个 cpu。

综上所述,在为 Gentoo 编译软件包时,我的 PC 可以在 1 分钟到 15 分钟的所有负载平均时段中生成超过 16 个负载,但仍然可以完美地执行所有其他任务。我什至看到它高达 24,尽管那时它开始减慢。如果 1.0 应该代表一个核心的充分利用,那么这是如何工作的呢?

答案1

1.0 是给定时间段内一项作业等待的平均值,而不是 100% 利用率时的 1 个核心。

空闲计算机的负载数为 0,每个使用或等待 CPU(就绪队列或运行队列)的进程将负载数加 1。大多数 UNIX 系统仅计算正在运行(在 CPU 上)或可运行(正在等待)的进程。 CPU)状态。然而,Linux 还包括处于不间断睡眠状态的进程(通常等待磁盘活动),如果许多进程由于 I/O 系统繁忙或停滞而保持 I/O 阻塞,则可能会导致明显不同的结果。例如,这包括由于 NFS 服务器故障或缓慢的介质(例如 USB 1.x 存储设备)而导致的进程阻塞。这种情况可能会导致平均负载升高,这并不反映 CPU 使用率的实际增加(但仍然可以了解用户必须等待多长时间)。

这里

答案2

传统上,如果进程没有休眠或者正在休眠进行非常短期的等待(例如页面等待),则 Unix 系统将进程视为“可运行”。 Linux 在此列表中添加了不间断 I/O 等待,这会导致负载平均值增大。

此外,niced 进程可能可以运行,但由于它们的优先级较低,因此当系统繁忙时不会收到实际的 CPU 时间。因此,这些进程还可以增加平均负载,而不会让系统感到负载。

相关内容