Solution 1:

I've found that the disk is usually the biggest bottleneck for our virtual machines. Especially if you're doing continuous integration across multiple VMs, you'll be doing a lot of reading and writing. If all the CI processes start at the same time, the problem is compounded.

The quickest way to get better performance may be to add physical drives and distribute your VMs across those drives.

Another way to get better performance would be a large RAID5 array. We've seen amazing performance in large VM clusters when you have lots of drives to spread the data across.

Solution 2:

From my experience, disk I/O is the largest bottleneck. After much experimentation, here's what we settled on for our standard Hyper-V server:

  • Dell PowerEdge 2970
  • Dual quad-core AMD procs
  • 16GB RAM
  • 8 x 146GB SAS 15,000 drives in RAID 10
  • Cost after discounts: $3000

We're able to comfortably run 6-10 guests on each box, doing similar things (CI, dev servers, load testing, etc).

Solution 3:

You also might want to upgrade to the RTM version. I'm not sure how much changed between RC2 and SP1, but that might help a little as well. As a_hardin said, the disk are probably the biggest point of contention.

Solution 4:

Along with being one of the best features of a virtualized environment, snapshots have a significant performance impact (as do dynamically expanding disks). There is a good discussion of these issues here:

http://blogs.msdn.com/virtual_pc_guy/archive/2009/04/23/should-virtual-machine-snapshots-be-used-in-production-hyper-v.aspx

If performance is critical, you can use fixed disks with no snapshots and use VSS for backups instead. If you prefer to use snapshots, make sure they are on your fast disks.