这些禁用超线程的场景之间是否存在性能差异?哪个是最好的,为什么?
- 在 BIOS 中禁用 HT
- 使用
noht
内核参数
高度优化的并行应用程序在启用 HT 的情况下运行速度会更慢。
https://www.percona.com/blog/2015/01/15/hyper-threading-double-cpu-throughput/
我们的应用程序在 4 核上运行速度比 4 核 + 4 HT 运行速度快 13%。
硬件:
- 木板:超微 X9SPU-F
- 中央处理器:英特尔(R) 至强(R) CPU E3-1275 V2
答案1
嗯,第一个明显的区别是noht
在现代 Linux 系统上实际上不执行任何操作。此内核启动选项早已过时,已被替换maxcpus=
。
设置maxcpus=m
,其中m
是物理(非 HT)核心的数量,现在可以完成同样的事情。
也可以通过 sysfs 启用或禁用单个 CPU 核心/超线程在系统运行时。
解决了这个问题...
在 BIOS 中禁用超线程与在操作系统中禁用超线程在性能上应该没有区别。
唯一真正的区别是,如果您在操作系统中禁用核心/线程,则可以稍后重新启用它们而无需重新启动。如果您运行不同的计算作业,您可能想要这样做,其中一些作业受益于超线程,而另一些则没有。