0

I am currently looking into setting up a new infrastructure for a hosting project of mine. Basically it will be managed hosting with a strong focus on Django-based apps. All will be Linux-based of course with PostgreSQL as DB and either nginx or Apache as web server along with GUnicorn etc.

Now I am scouting the market for server systems to rent and it is tough to get things that fit the budget and all criteria. So I would like to ask for advice on the following.

All the good offers I could find either use single high end XEON E3-12xx (Quads @ >= 3.2Ghz) or many core Opterons (either 6000 or older with 8 cores or more @ 2.00 - 2.40 GHz). From an I/O POV, both usually have HW-RAID10 with battery, enough RAM to satisfy my needs (24-32 GiB ECC-RAM) and a 1 Gbit/s uplink. A single offer I found is also rather nice but is based on two E5620 XEONs which are rather dated imho and that system is offered at the same price as the others.

Now I am torn. The XEONs do outperform the Opterons hands down in every synthetic benchmark I have seen - emphasis on synthetic. But it is my strong believe that many cores do offer great benefit when it comes to a server's work where a lot more is to do in parallel (e.g. also less expensive context switching). But with a difference in 1 Ghz or more per core, I am no longer so sure because in my case, I am comparing different micro-architectures (XEON vs. Opteron) and different generations as well.

So I'd like to ask the community: More cores at a lower rate or less cores at a higher rate for an app-centric web server that also has to handle the DB load?

The mail system is another story. Ideally I would like to have mail, db and web on three different servers. But that's not in the budget right now. So depending on what system I get for the web server, it is possible that the mail system could end up on that system as well... which would be sub-optimal, I know. I am worried here how much all the small writes from the mail system would effect the DB and Web performance. With 32 GiB of RAM for example, the DB will fit completely in RAM for the very near future until the service has grown considerably (if ever).

One possible (more or less optimal) scenario: Web and DB on an 8 core Opteron 62xx @ 2 Ghz box (everything else as above) and the mail system on a smaller E3-1230 for example. But I am again very worried by the Opteron's performance. :(

Tough decision. Again, I'd appreciate any advice/help I could get.

Thanks a lot in advance...

UPDATE(11/08/11 @ 1518 GMT): Basically I am comparing Sandy Bridge E3-12x0 XEONs with Magny-Cours/Zurich/Interlagos Opterons. Unfortunately I cannot get my hands on an Ivy Bridge based dedicated server. Based on the apache benchmarks and cpubenchmark.net results, the E3-1270v1 seems like a true workhorse which will outperform even a dual E5620 and most Opterons thrown at it which is kind of unbelievable. Naturally most of those tests are still synthetic and there are other bottlenecks to consider. But at this stage I want to lay a solid foundation for the future, so I won't be CPU bound too easily.

My intuition has always been more cores and/or processors for a web/db server instead of a higher clock rate at the expense of the amount of cores/processors. So looking at a 4C setup with the E3-1270 for example, feels like the wrong thing to do.

By the way, the hosting will be a product I am offering my clients, so it is not a single product I can benchmark. Basically it will be almost always Django-based apps, mostly CMS systems with custom functionality or custom projects.

Right now I am really considering a nice E3-1270 system as the combined Web- and DB-Server and a E3-1220 as the mail system. Both with fast RAIDs and plenty of RAM naturally. I am still rather worried though that the real 4C will pose a problem in the production environment soonish. :( But if I get a Opteron 6274 based system, I will have to run the mail system on that system as well, which is not very ideal. And besides, according to cpubenchmark.net it is not too much faster... but again: synthetic benchmark. :(

Basically what I am asking myself: Will a e.g. Opteron 6274 or 2x 6128 outperform a E3-1270 in a real world scenario or will the E3-1270 still win? Is it the right decision for a solid foundation?

Again, if anyone has any good suggestions and/or advice for me, it is very much appreciated because I am stuck in a feedback loop in my brain right now. :)

UPDATE(12/08/11 @ 1835 GMT) Thanks to everyone for their help. Right now I am investigating a totally different approach: Hosting my client's projects and such over at Heroku or Google AppEngine and thus avoiding most of this trouble in advance. ;) For the mail system, a E3-12x0 will totally suffice, so I would save myself all the headache with a combined web/app/db server which would not be very scalable in the end after all. I'll have to do some further investigating if this would be possible without any major limitations... but I am hopeful. :)

khaos
  • 213
  • 2
  • 8
  • 1
    The only true answer when you have specific workloads is to test your workload on the different platforms, and compare them. – Rob Moir Aug 11 '12 at 07:54
  • 1
    Good point, and I fully agree. Problem is: It would be hard to get my hands on several different dedicated servers that I am interested in to do tests. And about those tests: Since the projects that will be hosted on those systems, will vary by client, it is hard to come up with a good/realistic real world test. But again, I fully agree with you and I wish I could go that route. – khaos Aug 11 '12 at 15:43
  • possible duplicate of [Can you help me with my capacity planning?](http://serverfault.com/questions/384686/can-you-help-me-with-my-capacity-planning) – Michael Hampton Aug 11 '12 at 17:49
  • You can rent both short term to test comparative workloads, so its not impossible to test, just potentially expensive... but if your system is likely to be that sensitive to the difference then it will be money very well spent. – Rob Moir Aug 12 '12 at 06:28

4 Answers4

5

This is a complex theme, but do not forget one other element here - you also compare hardware of different generations. This is not ONLY a pure GHZ comparison, you may very well compare outdated opterons (8 cores only? - is that 2x4, that is a VERY slow core compare to todays) with a sandy bridge / Ivy bridge level Xeon. I would go with the Xeon, simply for the generational issue.

(And yes, I have the same - 1 quad core modern xeon AND a dual opteron with 2 sockets of 4 cores and the total erformance of the xeon kills the larger machine, which soon gets repurposed as a SAN system only.

TomTom
  • 50,857
  • 7
  • 52
  • 134
  • I know. Basically I am comparing Sandy Bridge (XEON) vs. Mangy-Cours/Zurich/Interlagos (Opteron). Almost no one offers Ivy Bridge in the dedicated server market here, so that's out of the question. I have managed to get my hands on some apache benchmarks and even there, the E3-1270 outperforms almost every Opteron thrown at it which is unbelievable actually. I will update my question in a minute with more infos. – khaos Aug 11 '12 at 15:18
  • It is not really unbelievable. The opteron you use was a FINE chip at it's time, but this is years ago. As I said, I have a similar machine (dual quad core). – TomTom Aug 11 '12 at 17:58
  • But take newer generation Opterons (6128, 6274) for example: Would those still fall behind a E3-1270 for example in your opinion? That's the tough question I keep asking myself. – khaos Aug 12 '12 at 09:18
  • That is a question I asm kyself, too. But then I do not think so - yes, they are slower, but... they have 8 modules = 16 cores while the E3 has only 4 cores + hyperthreading. That is QUITE a difference to make up. – TomTom Aug 12 '12 at 11:55
5

There is a lot more to your question than just cores and performance.

  • How many concurrent users does your server need to support?
  • Are you with one server and no redundancy? What is the acceptable downtime for your application?
  • Have you done any benchmark of your development machine for this application to somewhat extrapolate performance?

You may be too worried if you do not expect too much traffic. If you want to put all your apps on a single server, you risk complete outage if hardware has issues. See if you can go for 2x lower machines and distribute the load. For performance, you can dedicate cores to PostgreSQL process using taskset so DB performance is manageable.

If you manage your disks well, then you may get better performance as well. For example, set 2 disks in RAID 1 for pg_xlog.

The long answer is, benchmark your application, and consider redundancy if you cannot afford downtime. Also, compare costs with cloud solutions which will help if your application can scale.

Chida
  • 2,471
  • 1
  • 16
  • 29
  • All good points, thank you. Most of it I have already addressed in my response to "DJ Pon3" above. Redundancy is surely a thing I am worried about but nothing I can afford at this point in time. As soon as the budget permits it, I will gladly invest in replication and possibly high-availability. But again, at this point, that's a no-go and frequent backups and careful maintenance will have to be enough. That's another reason why I would like to at least separate the mail from the web/db system because I could at least do some DB replication and have not all services fail if one system is down. – khaos Aug 11 '12 at 15:48
  • I am accepting this answer because it has the broadest spectrum of valid informations and also hints at cloud solutions which is the way I am going now. :) – khaos Aug 14 '12 at 09:18
2

More cores will allow you to handle higher client counts with less context switching, which can in theory compensate for the difference in clock speed. The downside is that during periods of low usage, the system runs less efficiently.

Ignacio Vazquez-Abrams
  • 45,019
  • 5
  • 78
  • 84
0

Don't scale up, scale out!

What I understand from your question is that you expect lots of workload e.g. hits on your web server. As you might not have detailed info on what actually is hosted, static vs, dynamic content and if dynamic what technology is used, java, C#, Python, or G*d forbid PHP it is at this moment not possible to come up with the solution other than that it should scale.

My suggestion? use a LB cluster of relatively cheap hardware that can be extended when need be. Don't put everything on one machine that either is over-scaled (expensive) or under-scaled (performance penalty). But allow your self to start small and grow when traffic grows.

So really, load balancing is the answer you are looking for.

theking2
  • 159
  • 1
  • 8
  • You might want to make your answer more specific in nature. More as to how to do this rather than what. See the [How to Answer a Question Guide](http://stackoverflow.com/questions/how-to-answer) for further details. – slm Apr 13 '13 at 12:03