我有一个 HP DL380 G7,里面有 2 个不匹配的 CPU。一种是内核速度更快的四核 CPU,一种是内核速度较慢的 6 核 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(四核)
呜?!?
这太疯狂了,你知道吗?它不受支持,可能对您的硬件不利。您应该在服务器中使用同等规格的处理器。
我想您只需在
taskset
仅包含您希望使用的 CPU 内核的 cgroup 或 shield(或 via )中执行您的应用程序。您还可以使用numactl
. 但实际上,您为什么不完全移除较慢的 CPU,或者支付使系统符合规范所需的费用。如果您的应用程序被硬编码为使用 CPU0-CPU3,那么显而易见的事情可能就是物理交换套接字……但实际上,这里只使用一个 CPU 运行。
如果您指的是 ProLiant DL380 G7 硬件,您的“更快” CPU 可能是 Nehalem 5500 系列 proc,而速度较慢的六核 CPU 是 Westmere。你有基准测试吗?安装了哪些特定的 CPU?
编辑:
好的,所以这些至少是同一代/步进的 CPU。但这仍然是个坏主意... CPU 规格的差异甚至不是那么大(与诸如 3.47GHz 的 Intel X5690 之类的东西相比)。