13

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.

Morgan Tocker
  • 208
  • 2
  • 12
  • you might find this interesting: http://it20.info/2007/10/intel-amd-vmware-and-aircrafts/ – ToastMan Oct 21 '11 at 17:32
  • If your application can split reads/write queries to different server pools, you might be able to circumvent some of the MySQL performance problems by running a second instance to slave reads off of. I don't know enough about your architecture or workload to know if this is a workable idea or if this will just add a ton of unnecessary overhead and complexity, but it's an option to consider. – jgoldschrafe Oct 24 '11 at 19:00
  • I'm familiar with how read/write split works. It's not suitable for a performance gain in this case. – Morgan Tocker Oct 24 '11 at 20:45

5 Answers5

10

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.

sysadmin1138
  • 131,083
  • 18
  • 173
  • 296
  • Thanks, unfortunately the AMD system won't be a bulldozer. It's an AMD Opteron 6140 (or similar). – Morgan Tocker Oct 21 '11 at 17:57
  • @MorganTocker As it happens, I'm familiar with that class of CPU, and that's what I wrote my post for. Bulldozer has some specific problems that I didn't go into. – sysadmin1138 Oct 21 '11 at 18:14
4

For the most part, you'll find both processors are very comparable. AMD processors have a slight edge in RAM speeds (usually) because of the 4th channel. Intel processors generally have lower CPI (possibly more so with HT, though it very much depends on workload). AMD are generally cheaper.

Most of these factors will give an edge to one or the other, depending on your workload. Neither is going to be significantly worse than the other (assuming sane configurations and roughly equal CapEx).

Chris S
  • 77,337
  • 11
  • 120
  • 212
2

You should consider the performance differences that the differing RAM architecture may bring, and whether or not that is a deciding factor for your organization.

Also as a bit of a side note, while you may not be concerned with the peak performance, if your VM's will not have multiple cores each and/or specific tasks within are single-threaded, there is a considerable performance advantage in the intels per core than AMD, even if the total core count is less.

sandroid
  • 1,724
  • 12
  • 16
  • Assume that our applications are suitably multi-threaded (webservers are; willing to accept that MySQL is not entirely). – Morgan Tocker Oct 21 '11 at 17:51
2

The main difference is in approach; in the mid-range, AMD has a slight emphasis on cores in a part that costs about as much as a like Intel part. The Intel part will have less cores clocked higher.

So, for virtualized web app workloads, you'll likely want to favor AMD systems.

Unless there's a big price difference, I wouldn't worry about dollars. I'd look more to the IO subsystem. And, the TCO on 40 servers will be mostly support, software licensing, if any, and staffing, probably not the servers themselves.

At a minimum, you need to do yourself a favor, bring in both vendors, and run your systems on their hardware before committing to 40 servers from either one. Only you can answer the question properly for your particular workload.

alphadogg
  • 285
  • 4
  • 17
  • Thank you for your answer! We don't have one workload - we have several. So to bring in the vendor, we'd need to fully migrate over, and then migrate again to try both. I realize that is the optimal, it's just not practical in our case. We can pick a smaller number of roles to move and project, but to do that we need to know what we should be measuring/looking out for; hence my question ;) – Morgan Tocker Oct 24 '11 at 20:44
  • By workload, I mean you have one OVERALL workload consisting of (presumably) lots of different servers doing different things. You should be able to convert a subset of key servers to virtual images pretty easily nowadays (with software that can assist this) that can be loaded onto the servers you are about to buy. Not a negligable task, but the only way to be sure that not only the CPU, but the IO subsystem and everything else works in your favor. Otherwise, everyone is hand-waiving and guesstimating. :) – alphadogg Oct 24 '11 at 20:56
1

One more thing to throw out there, beware if you use virtualization of any type that migrating the guests from Intel to AMD can be a real issue and clustering across the brands isn't in the cards at all. Stick to one platform for each cluster and accept that it is hard to jump from one to another.

Mark
  • 2,248
  • 12
  • 15
  • Live migration between architectures with KVM appears to largely be a non-issue on 64-bit: http://www.linux-kvm.org/page/FAQ#Does_KVM_support_live_migration_from_an_AMD_host_to_an_Intel_host_and_back.3F – Ophidian Oct 25 '11 at 13:49
  • User said "legacy LAMP"; that smells like there could be 32-bit guests to me. Still, it is nice to know KVM is getting on top of the problem! Thanks for the note. – Mark Oct 25 '11 at 14:06
  • Yes, some guests are 32-bit, but we plan to move and be all 64-bit. – Morgan Tocker Oct 26 '11 at 14:27