views:

436

answers:

3

We're using CruiseControl.NET to manage our builds and we're in the process of obtaining a new build server. I've been tasked with coming up with the spec for the new server.

This server will need to run multiple builds concurrently and as effeciently as possible.

What would you consider the ideal spec for this server?

Any links to existing articles / blogs dealing with this topic will also be welcome!

Edit: Will RAID be helpful at all? (Bonus points)

+1  A: 

Make sure the spec includes a multi-core processor, and fast HDDs (10000RPM).

Troy Howard
+1  A: 

Basically, you're looking for the same things you'd look for in a developer machine:

  1. As much RAM as you can afford (remember you need to be running a 64-bit OS to take advantage of more than 3gig)
  2. The fastest disks you can afford
  3. As many cores as you can afford

If you're using MSBUILD and not doing too many concurrent builds, i'd recommend using the parallel build switch (http://www.hanselman.com/blog/FasterBuildsWithMSBuildUsingParallelBuildsAndMulticoreCPUs.aspx). With concurrent builds, it's probably better to have the builds stick to a single process (and core).

michael.aird
Being pedantic: you need 64bit Windows (or a server version) to use more than 3(+a bit) GB. Other 32bit OSes can handle up to 64GB of RAM, desktop Windows versions are artificially limited.
skolima
Sure. The poster specified they were using CruiseControl.net so I'm assuming they're running some version of windows.
michael.aird
+1  A: 

I would also point out that all of the above recommendations depend on what you are using to compile. If you are using the VisualStudio command line for instance, you will be very sad the first time you try concurrent builds. Also how many builds will be going on, if they are concurrent. Most people try beefing up build servers way too much, Processor is rarely the bottleneck. Disk I/O is usually the culprit. You also need to analyze how much of your build can run in parallel, or is a dependency heavy build projects in order type? Typically you should have an hardware specialist analyze a current build (builds) and they can ussualy make recommendations on them. We actually use virtualized build servers (6) all running on a single quad core with 4 GB of RAM and it works nearly as fast as when they each ran straight on the server. That is how we obtained our parallelism.

Alex