34

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)

6
  • Please post the specific CPU models from cat /proc/cpuinfo.
    – ewwhite
    Aug 8, 2014 at 11:53
  • 26
    Upvoting because I didn't even know unequal CPUs were possible, always something new to learn... Aug 8, 2014 at 12:26
  • 2
    @kyle it's possible, but not supported or endorsed by HP.
    – ewwhite
    Aug 8, 2014 at 12:35
  • 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 8, 2014 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 2, 2014 at 13:59

1 Answer 1

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).

5
  • 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 8, 2014 at 11:57
  • @paulos What application is this?
    – ewwhite
    Aug 8, 2014 at 12:00
  • It's actually operating as a checkpoint firewall
    – paulos
    Aug 8, 2014 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 8, 2014 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 8, 2014 at 12:05

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .