我有一个单线程、受 CPU 限制的应用程序,目前运行在一台多核 Windows 机器上(32 路 2.1GHz Pentium Pro/II/III)。它卡在其中一个“核心”的 100% 上,相当于大约 3% 的 CPU。不幸的是,该应用程序无法轻松修改或变为多线程。我们遇到了应用程序性能问题,很明显 CPU 是瓶颈。
我们有其他硬件的规格,即 2xQuad 核 Xeon 3GHz 机器。但我不知道这是否是应用程序的更好规格。我的第一直觉是时钟速度更快,内核更少(8 个而不是 32 个),因此应用程序总体运行得更好。但我意识到事情没那么简单,在 32 路机器上,许多“内核”都是超线程的,我不知道简单的计算是否适用。
我只是在寻找一种粗略的“经验法则”方法来评估这两台机器。我知道要得到真正的答案,我需要进行适当的测试,但如果这样做不太可能有帮助,我就不想花时间和精力去做。
我也确信还有更好的硬件/选项。只是遗憾的是我们现在无法获得它们 :-(
答案1
您已经明确表示您的应用程序是单线程的,并且受到单核 CPU 性能的限制。根据定义,多核处理器和超线程无济于事。当程序只能使用一个内核时,添加一百万个内核不会使其运行得更快。
提高单核应用程序性能的唯一方法是获得具有更快内核的 CPU。提高内核性能的方法有两种:更好的 IPC 和更高的时钟速度。
新一代 CPU 具有更好的 IPC。时钟频率更高的处理器具有更高的时钟速度。那么唯一的经验法则就是获得时钟速度最高的最新一代处理器。
实际上,使用 1xQuad 核 i7 系统搭配 4Ghz CPU 比使用 2x Quad 核 3Ghz Xeon 更好。Xeon 会比 2x Quad 核 3Ghz Xeon 早几代,这意味着 IPC 更低,时钟速度也低 1Ghz。