Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

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)

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

1 Answer 1

up vote 28 down vote accepted

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

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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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