Linux负载平均值和超线程

我的对 Linux 负载平均的初步理解是,对于每个整数,一个 CPU 核心一直在工作。例如,1 表示在一个 4 核系统中,有 1 个核心正在以满负荷运行。超线程如何影响这一情况?负载平均值是否考虑了超线程?

3等待“快速I/O”(例如本地磁盘访问)的线程也会计入负载平均值。 - David Schwartz
1个回答

我通常认为HyperThreaded核心相当于真实核心的20%-30%,这取决于您的应用程序能否有效地利用多个线程。它们会被考虑在负载平均值和负载平均阈值中。 以下是启用Hyperthreading之前和之后的双插槽Intel X5570 Nehalem系统的示例。操作系统为CentOS 5.8。实际的平均系统运行队列/负载平均值没有发生实质性变化(该应用程序几乎是单线程),但负载阈值发生了变化。

enter image description here

说到这一点,有很多时候我会禁用超线程... 对于我的低延迟和确定性应用程序,我希望更精细地控制应用程序资源的调度位置。在这些情况下,使用超线程核心会有一定的惩罚。此外,我还有一个特殊情况,应用程序运行在一个具有超线程功能的4插槽8核CPU上。核心太多了...所以我只是禁用了超线程,将逻辑CPU从64个减少到32个。

enter image description here