是否有可能影响 Linux 下 CPU 的枚举方式?

是否有可能影响 Linux 下 CPU 的枚举方式?

我有一台 HP DL380 G7,里面有 2 个不匹配的 CPU。一个是四核 CPU,内核速度更快,另一个是六核 CPU,内核速度较慢。

在这个盒子上我运行一个应用程序,由于许可原因,它将只使用 CPU0-CPU3。

对于我来说,希望四核 CPU 上的更快内核能够在操作系统中枚举到 CPU0-CPU3,从而为我带来性能奖励,因为 a) 使用更快的时钟内核,并且 b) 将所有线程保留在同一个物理 CPU 上。

有没有办法实现这一点,是在 BIOS 中,还是在 Linux 中的配置文件或启动选项中?

具体CPU型号为:

Intel(R) Xeon(R) CPU E5649 @ 2.53GHz(六核)

Intel(R) Xeon(R) CPU E5640 @ 2.67GHz(四核)

答案1

什么?!?

这是疯狂的,你知道吗?它不受支持,而且可能不适合你的硬件。你应该在服务器上使用同等规格的处理器。

我想您可以简单地在 cgroup 或 shield(或通过taskset)中执行您的应用程序,这些 cgroup 或 shield 仅包含您希望使用的 CPU 核心。您还可以使用 锁定对该 CPU 的内存访问numactl。但实际上,您为什么不完全移除较慢的 CPU 或支付使系统符合规格所需的费用呢?

也许显而易见的事情是,如果您的应用程序硬编码为使用 CPU0-CPU3,则物理上交换插槽......但实际上,这里只需使用一个 CPU 运行。

如果您指的是 ProLiant DL380 G7 硬件,那么您的“较快”CPU 可能是 Nehalem 5500 系列处理器,而较慢的六核 CPU 则是 Westmere。您是否进行过基准测试?安装了哪些特定 CPU?

编辑:

好吧,至少这些是同一代/步进的 CPU。但这仍然是一个坏主意……CPU 规格的差异甚至不是很大(与 3.47GHz 的 Intel X5690 等相比)。

相关内容