Building a low-cost bad-ass “server” machine

serverI have been playing around with Wikipedia data and tried doing some byte pushing on my Dreamhost web space. Since this is shared web space, the processing power and memory available are limited. I was able to create database tables in mysql by parsing the wiki xml dump and some extra processing as well to construct some custom derived tables but I had to constantly write code keeping in mind the resource constraints. Although it is fun doing this, it detracts from my actual goal (wikipedia data). I decided to build my own “server” for doing stuff like this, which would double as a “home theatre”.

Requirements

Tons of memory
I will need a lot of memory to keep data in memory for doing various things. This is my primary need. Also, Linux loves extra memory as it tries to use every last bit to cache programs and data from disk – potentially a great way to boost performance.

Reasonable processing capability
Top of the line processors cost a ton and I am not after the best in processors. I want a decent processor that has a good amount of L2 cache and is overclockable.

Good value
I will be trying to keep the cost down and pick components that are at the sweet spot on the price-performance plot.

High memory bandwidth and low latency
Since my requirement is to move GB’s of data into the processor and back to the hard disk, I need the memory bandwidth to me good between the processor – RAM – HDD.

Good on-board graphics and audio support
A graphics chipset that is well supported by Linux so I can turn on the eye-candy in Ubuntu.

Support for over-clocking
The processor, RAM and motherboard should be amenable to overclocking so I can crank up the heat!

Less power consumption (because I plan to run this machine 24X7)
Since I will be running this machine all the time, I want minimal power to be consumed. Very few people realize that expense for electricity is a significant part of operational cost.

Virtualization support
I plan to expose this machine on the internet. To make it more secure, I plan to host the webserver in a DMZ. I want to run a virtual machine (Ubuntu) as DMZ. Virtualization support can be handy here.

Ports (Firewire, HDMI, USB, E-SATA)
USB2.0 ports are pretty standard now-a-days. I want to have a couple of SATA’s available for adding more HDD at a later date. HDMI will be useful if a buy a flat-panel TV some time.

Processor

intel core 2 duoWhen I bought a computer a couple of years back, the value choice was obviously AMD. But the equation has changed since then and after a little research I found Intel core 2 duo processors beat the crap out AMD’s. The only area where AMD processors did better was memory bandwidth because of HyperTransport.

Intel released a line of quad core processors recently. Most of these are priced very high except Intel Core 2 Quad 6600 available in Bangalore, India for a little over Rs 11,000 (approx $280). I was very tempted to go for this one but chose Intel Core 2 Duo E4500. Although this one has only 2MB L2 cache and does not have virtualization support, I picked it for its excellent value (Rs 4800 or approx $120) and low power consumption (65W peak). Also I plan to run processes in batch mode which can run over-night, so an additional few minutes taken because of lower muscle is not an issue for me.

The E4500 model is ideal for overclocking.

RAM

Since I am trying to build a low-cost machine, I decided not to consider ECC and buffered RAM (the motherboard would not have supported it anyway). I got 4 x 1GB Transcend 800Mhz sticks for Rs 1350/- ($34) each so I could use the dual-channel slots on my motherboard to the max. These are quite overclockable.

ram dimm

Motherboard

The criteria for motherboard was that it should support the processor’s FSB (and more for later) and memory bus speed. In addition to these, it would have to support atleast 4GB ram, have 4 SATA ports, firewire, Gigabit Ethernet, HDMI, atleast 5.1 onboard sound, decent onboard graphics. I picked GA-G33-S2H from Gigabyte based on Intel G33 chipset (Rs 4550/- or $116) (specs). The BIOS has support for overclocking (voltage and multipliers can be tweaked).

motherboard

Other components

Seagate Barracuda 320GB 7200 rpm, Samsung DVD/CD read-writer, Microsoft mouse, i-Ball keyboard, Viewsonic Touchscreen monitor.

Results

I put the machine under load by making it crunch some Wikipedia data and although I have not measured the timings, I know from previous observation that it is blistering fast. I have Compiz turned on in Ubuntu and the UI is highly responsive. When processing big files, I have noticed that the files are pre-cached and this does speed up things quite a bit. I am convinced that adding more RAM is a good option instead of going for the best processor in the market to improve responsiveness and perceived UI speed. 2GB of RAM should be enough for desktop usage.

The processor, motherboard, ram and cabinet cost me Rs 19,300 ($494).

Calculating PI using bc
My Machine
time echo “scale=5000; 4*a(1)” | bc -l -q
real 0m49.327s
user 0m49.215s
sys 0m0.012s

Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
real 0m27.210s
user 0m27.115s
sys 0m0.042s

Hardinfo is handy benchmarking tool for Linux.

My Machine
Zlib 20079.481,
Fibonacci 5.728,
MD5 41.227,
SHA1 61.985,
Blowfish 20.411,
Raytracing 13.476

AMD Athlon(tm) 64 Processor 3800+
Zlib 20404.837,
Fibonacci 3.490,
MD5 47.381,
SHA1 68.948,
Blowfish 17.056,
Raytracing 12.385…

Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz

ZLib 29264.719
Fibonacci 3.254
MD5 75.775
SHA1 114.178
Blowfish 11.052
Raytracing 7.213

The hardinfo test results are CPU oriented. I did not build this machine to excel at these. This machine is meant for munching on GB’s of data. So memory bandwidth between CPU – RAM – HDD is a more important factor. I have not found a good benchmark to calculate this aspect. Do mail me if you know such a benchmark.

Overall, I am extremely happy with this configuration and definitely recommend it if you have similar requirements.

road runner

Additional links
how to choose hardware components
CPU comparison charts at Tom’s Hardware
Computer Warehouse, Bangalore – Price List
Note: I looked up the prices in computer warehouse web site and bought the components in S.P road, Bangalore in Ankit Infotech.

No Trackbacks

7 Comments

  1. I would suggest adding 2 more GB and using a 64 bit operating system (Vista 64 bit is quite excellent :-) ). Don’t go for the extra RAM unless you’re planning on using 64-bit though.

    Also, if you can afford it, go for a second monitor. I invested in one of these and it is more than worth the money

    Posted November 28, 2007 at 12:11 am | Permalink
  2. And why did you pick one without support for virtualization? I’m willing to bet you’ll want to run Xen or Hyper-V very,very soon

    Posted November 28, 2007 at 12:12 am | Permalink
  3. You mean add 2GB over 4GB? Even if I did want to add more RAM I would think of jumping to 8GB instead of 6GB to take advantage of dual channelling. I don’t think my motherboard supports flexible RAM configs, so I will wait for a while to add more RAM. 4GB seems about right for me now.

    I’m using 64-bit Ubuntu 7.10, so I get to use all of 4GB (I’m don’t want to shell out cash for Vista!).

    A second monitor is very tempting, however I just spent a ton on the touch screen. I will have to wait to fill my wallet :) .

    I went for E4500 because it was around Rs1000-1500 cheaper than a similar processor that supported Virtualization. Since, my requirement is to run Linux as guest, I can get a modified kernel and run it over Xen to not have or reduce the usual virtualization overhead. As I understand, I will require hardware virtualization only if I have an unmodifiable kernel on my hands (say XP or Vista). more info.

    Posted November 28, 2007 at 6:42 am | Permalink
  4. Nice Post! Thanks For The Info..

    Posted March 6, 2008 at 12:21 am | Permalink
  5. Computer memory is so cheap these days that I also would go for 64-bit and 8 Gigabytes of RAM (2x4GB)

    Any reason you did not go for the Wolfdale processor line? They have lower power consumption but only 2 core.

    Server Monitorings last blog post..WordPress 2.6.1 released

    Posted August 15, 2008 at 7:23 pm | Permalink
  6. Sreenivasa

    A nice post.

    Any idea about availability of motherboards supporting dual quad core CPUs?

    I’m looking to build something that has 8GB RAM and 8 CPU cores – I need at least 6 processes running in parallel

    Posted April 15, 2009 at 3:17 pm | Permalink
  7. Bob*!

    I am trying to build a cheap 64bit server for Windows Server 2008, its not going to be used that heavily, only 2 people and really something to fool around and learn with. Like you power is a major consideration. I dont want a 250w or 300w power supply… i’d like another option … any ideas?

    Posted November 25, 2009 at 6:17 pm | Permalink