Considerations when chosing AMD processors over Intel

kvm-virtualizationlampvirtualization

I work for a company with a lot of legacy LAMP web-applications, where we are trying to refresh our hardware from ~250 physical servers to ~40 new servers w/virtualization. We have received two quotes from vendors – one is suggesting Intel processors, the other AMD.

One thing I like about the high core-counts with AMD, is that we will be able to dedicate cores to VMs, which means we have a lower chance of applications interfering with each-other due to spikes, which to a certain extent is more important to me than peak performance.

The other considerations I have in mind are:

  • Power consumption may be different (not an issue in our case.)
  • CPU instructions like CRC32 (SSE 4.2) will not be supported (Edit: MySQL 5.6 appears to support SSE4.2. Not sure about Apache)
  • MySQL doesn't scale perfectly after ~16/~32 cores (I'm willing to accept this trade off.)

What other considerations am I missing?

(Note to moderators: I am aware of this thread – I consider the question slightly different.)


Edit: Assume that the tasks are exceptionally parallel (webservers), and that I do not care about the database servers not being so parallel.

Best Answer

There has been a good amount of press regarding the latest AMD processor offering, called Bulldozer. The "Server" version of this part isn't out yet, but the desktop offering is a great view into some of the potential problems of the new stuff.

As for the current generation of Server part, all in all the recommendation is fairly good at a generic level. Web-serving and (most) database work is largely Integer based, and the AMD CPUs do well with Integer computation. Additionally, web-serving is (generically) a problem that can be highly parallelized. AMD is focusing rather specifically on "many cores make for faster work", and LAMP (again, generically) tends to respond well to that.

One area you really do need to pay attention to are single-thread dependencies in your applications. The AMD parts don't scale as far clock-wise as Intel parts, so processes which are fundamentally single-thread can bottleneck your overall system a lot quicker than it would on faster CPU parts. Only you know if this applies to you or not. Certain database operations may be better served from faster Intel processors with smaller core-counts just so those few fat threads can really scream.

Application code matters here too. Some long-running web-server processes could chew up a lot of single-thread time and would also like a faster clock. That may be solvable through rewriting out the need for that long running process, but until then a faster clock would be nice.

But in general, for lots-o-webserver-vm style workloads, those 12-core parts can scale pretty darned far. If you do run into some single-thread problems, going with the higher clocked 8-core parts would be an acceptable compromise.