4

我将 Linux 内核 2.6.32 移植到 Intel(R) Xeon(R) CPU E31275 @ 3.40GHz。如果我在 BIOS 中启用超线程,我可以看到 8 个 CPU 内核(CPU0 ~ CPU7)。大部分中断发生在 CPU 4 中,这个核心的 CPU 使用率远高于其他核心(几乎是其他核心的两倍)。我不是很明白,因为我认为我没有设置任何IRQ绑定操作。

如果我在 BIOS 中禁用超线程,那么一切正常。IRQ 已经平衡,所有内核(CPU0 ~ CPU3)的 CPU 使用率也接近平衡。

有人可以解释一下吗?和BIOS有关吗?我应该在内核中做一些特殊的设置吗?

4

1 回答 1

5

有些程序会从 HT(超线程)中获得负面影响,要解释这一点,您必须了解 HT 是什么。正如您所说,您看到了 7 个(0-7 还是 8 个)cpu 内核,这不是真的,您的 CPU 中有 4 个内核,8 个内核是虚拟内核,所以一个内核有 2 个线程(并且表现得像他是 2核心)。通常 HT 有助于更快地运行程序,因为 CPU/OS 能够同时运行(执行这些程序所做的任何事情)8 个程序,如果没有 HT,您只能同时运行 4 个。您无需设置任何设置,因为您无法更改此外观,如果您是该程序的开发人员,您应该重新检查代码并根据需要针对 HT 进行优化,或者您可以禁用 HT。

由于一些胡说八道的人在谈论另一个信息:HT 正在增加 CPU 的功率,这不是真的!即使你看到 8 个内核,让我们说 4GHz(GHz 什么也没说,应该用触发器测量),你得到的功率与你打开 HT 并得到 4 个 4GHz 内核时的功率相同。如果您在 2 个虚拟内核上获得 HT,则从您的 CPU 共享 1 个物理内核。

这里有一些关于 HT 的更多信息:http: //www.makeuseof.com/tag/hyperthreading-technology-explained/

我找不到指向一个非常好的站点的旧链接,其中有代码片段显示 HT 的坏代码和好的代码(意思是比没有 HT 慢,反之亦然)。

TL;DR:由于 HT 的发展,并不是每个程序都能从 HT 中受益。

于 2012-05-15T06:53:53.983 回答