-2

I have a single-threaded, CPU-bound application that's currently running on a multi-core Windows machine (32-way 2.1GHz Pentium Pro/II/III). It's stuck at 100% of one of the "cores", which equates to about 3% CPU. Unfortunately, the application can't be easily modified or made multi-threaded. We're hitting application performance problems, and it's pretty clear that CPU is the bottleneck.

We have a spec for other hardware, a 2xQuad core Xeon 3GHz machine. But what I don't know is whether this would be a better spec for the application. My immediate instinct is that the clock speed is faster and there are less cores (8 rather than 32) so overall the application would run better. But I'm conscious that it's not that simple, on the 32-way machine lots of those "cores" are hyper-threading and I don't know whether simple-minded calculations apply.

I'm just looking for a rough "rule of thumb" approach to take in evaluating the 2 machines. I know that to get a true answer, I'd need to do proper tests, but I don't want to spend the time and effort doing so if it's unlikely to help.

I'm also sure there's better hardware/options available out there. Just not ones that we have access to right now, sadly :-(

7
  • 1
    I'd suspect a relatively modern xeon would do better, considering all three possible and different processor architectures in play on the '32 way' system. What's the hardware, really?
    – Journeyman Geek
    Jan 26, 2016 at 13:28
  • 1
    Actually, did PIIIs even run that fast? Yeah, not really enough information to answer, and what we have is a bit suspect. I'm curious to what the multicore beast is tho
    – Journeyman Geek
    Jan 26, 2016 at 13:31
  • @JourneymanGeek: No, they didn't. They also didn't have hyper-threading.
    – qasdfdsaq
    Jan 26, 2016 at 13:41
  • The big problem is that I don't know any hardware details. And I don't want to get sucked into big evaluations if it's (relatively) obvious it's pointless. But if "you can't tell" is the answer, then that's fine, I'll just have to go with that.
    – Paul Moore
    Jan 26, 2016 at 13:41
  • Big evaluations, no. Going to "Control Panel, System" and looking at the processor would be a big help.
    – Journeyman Geek
    Jan 26, 2016 at 13:48

1 Answer 1

1

You've clearly stated yourself your application is single-threaded and limited by single-core CPU performance. By definition, multi-core processors and hyperthreading won't help. Adding a million cores won't make a program run faster when it can only use one core.

The only way to improve single-core application performance is to get a CPU with faster cores. There are two ways to increase core performance: better IPC, and higher clockspeed.

Newer generations of CPU have better IPC. Higher clocked processors have ... higher clockspeed. The only rule of thumb then is to get the latest generation processor with the highest clockspeed.

In reality, you would be better off with a 1xQuad core i7 system with a 4Ghz CPU than you would with a 2x Quad-core 3Ghz Xeons. The Xeons will be several generations older, which means lower IPC, and have 1Ghz less clockspeed.

4
  • OK, thanks. So given only 2 hardware options, without sufficient information on actual spec, and with no real "use something more up to date" option, a simple "faster clockspeed is better, ignore number of cores if the app is single threaded" rule of thumb is about as good as I'll get?
    – Paul Moore
    Jan 26, 2016 at 13:44
  • Yes, that's exactly right.
    – qasdfdsaq
    Jan 26, 2016 at 13:45
  • Go newer, faster clock speed per core and you should be good. This is probably a best fit answer based on the information given
    – Journeyman Geek
    Jan 26, 2016 at 13:52
  • Thanks, that's all I need (and as much as I could hope for given the level of info I have).
    – Paul Moore
    Jan 26, 2016 at 13:58

Not the answer you're looking for? Browse other questions tagged or ask your own question.