33

I have a HP DL380 G7 with 2 mismatched CPUs in it. One is a quad core CPU with faster cores, and one is a 6 core CPU with slower cores.

On this box I run an application that due to licensing reasons will only use CPU0-CPU3.

For me it would be desirable for the faster cores on the quad core CPU to enumerate to CPU0-CPU3 in the operating system, giving me a performance bonus for a) using faster clocked cores, and b) keeping all threads on the same physical CPU.

Is there a way to make this happen, either within the BIOS, or in a configuration file or boot option in Linux?

The specific CPU models are:

Intel(R) Xeon(R) CPU E5649 @ 2.53GHz (hex core)

Intel(R) Xeon(R) CPU E5640 @ 2.67GHz (quad core)

ewwhite
  • 194,921
  • 91
  • 434
  • 799
paulos
  • 1,694
  • 9
  • 12
  • Please post the specific CPU models from `cat /proc/cpuinfo`. – ewwhite Aug 08 '14 at 11:53
  • 25
    Upvoting because I didn't even know unequal CPUs were possible, always something new to learn... – Kyle Brandt Aug 08 '14 at 12:26
  • 2
    @kyle it's possible, but not supported or endorsed by HP. – ewwhite Aug 08 '14 at 12:35
  • This question makes me wonder what would happen if the CPUs not only differ in speed, but also differ in available features. Could a process potentially detect the availability of a CPU feature and then while it is running get migrated to a CPU, which does not have that feature? – kasperd Aug 08 '14 at 13:33
  • 1
    @kasperd In HP-land, if you load two CPUs of different steppings, you get a `CPU mismatch detected` error at POST. That could happen within a CPU generation; e.g. an Intel 5606 and 5690 in the same chassis. – ewwhite Aug 08 '14 at 13:51
  • 3
    If anyone is interested in what we actually did here, we had a road trip down to the datacentre & physically removed the quad core CPU from the servers – paulos Sep 02 '14 at 13:59

1 Answers1

27

Wut?!?

This is crazy, you know? It's unsupported and likely not good for your hardware. You should be using equally-spec'd processors in your server.

I suppose you couple simply execute your application in a cgroup or shield (or via taskset) that only contains the CPU cores you wish to use. You can also pin memory access to that CPU with numactl. But really, why wouldn't you either remove the slower CPU entirely or pay what it takes to bring the system into spec.

Maybe the obvious thing, if your application is hardcoded to use CPU0-CPU3, is to physically swap the sockets... but really, just run with one CPU here.

If you're referring to ProLiant DL380 G7 hardware, your "faster" CPU is likely a Nehalem 5500-series proc, with the slower hex-core CPU being a Westmere. Have you benchmarked at all? Which specific CPUs are installed?

Edit:

Okay, so these are at least CPUs of the same generation/stepping. But it's still a bad idea... The difference in CPU spec isn't even that great (versus something like an Intel X5690 at 3.47GHz).

ewwhite
  • 194,921
  • 91
  • 434
  • 799
  • 4
    Everyone has the same reaction! I know that ideally the CPU's would be the same, but this is what HP gave us back in the day. This is the hand I've been dealt though so i have to make the best of it until the next hardware refresh comes around. The CPU's are Xeon E5649 @ 2.53GHz (hex core) & E5640 @ 2.67GHz (quad core). Removing the 6 core CPU completely actually is one of the options on the table. It'd be neater to be able to disable the socket entirely in the BIOS but it doesn't seem possible. – paulos Aug 08 '14 at 11:57
  • @paulos What application is this? – ewwhite Aug 08 '14 at 12:00
  • It's actually operating as a checkpoint firewall – paulos Aug 08 '14 at 12:02
  • 3
    @paulos Then why does 2.67GHz versus 2.53GHz matter? Just put the 6-core CPU in the server and remove the 4-core. – ewwhite Aug 08 '14 at 12:03
  • re: CPU spec, yes I think it's only about 5% quicker or something like that. I expect the performance gain to be attributed to having all worker threads & in particular the storm of irq from the network cards being on the same physical CPU. edit: Yes using the 6 core CPU only is also a possibility. – paulos Aug 08 '14 at 12:05