我得出以下结论,你能告诉我我是对还是错吗?
在我的解释中,2x6 核 CPU,操作系统将看到 12 个 CPU
我正在运行一个数据库,并且许可证限制为 10 CPU(我可以获得更多,但太贵了),我试图在性能方面充分利用它。
如果我购买 2 个六核 CPU 并且我的许可证是 10 个 CPU,我相信我的应用程序运行速度会比在 BIOS 中启用超线程时更快,因为我最终会在盒子上得到 24 个 CPU 但只会使用 10 个,因此通过禁用超线程每个 CPU 都会更快。
此外,我相信,就吞吐量而言,最高频率会更好。
如果我正在运行没有许可证的应用程序,那么启用超线程就很有意义了。
感谢您的输入。
答案1
您没有列出操作系统,但假设操作系统正确地进行线程调度,则在您的场景中,无论是否使用超线程,您都应该获得大致相同的性能。
你有:
- 12 个硬件核心
- 24 个硬件线程
- 限制为 10 个软件线程
如果您禁用了 HT,那么它将每个核心安排 1 个线程,并让 2 个核心处于空闲状态。
如果启用了 HT,那么操作系统仍然应该为每个核心调度 DB 的线程 1 个软件线程,在 DB 线程之间留下空闲的硬件线程;数据库将在线程 0、线程 2、线程 4、线程 6 等上进行调度,并使奇数编号的硬件线程处于空闲状态(或供系统上的其他应用程序使用)。
在评估性能时,超线程有点奇怪,因为 12 个线程并没有使用一半的 CPU - 它使用了所有的CPU。其余 12 个线程仅为您提供约 10%-15% 的额外功率。它们的好处是,当前 12 个线程等待从磁盘或 RAM 返回数据时,CPU 可以做其他事情。