I moved this question from StackOverflow because it makes more sense to have it here
We have decided to go with a virtualization solution for a few of our development servers. I have an idea of what the hardware specs would be like if we bought separate physical servers, but I have no idea how to consolidate that information into the specification for a generalized virtual server.
I know intuitively that the specs are not additive - I shouldn't just add up all the RAM requirements from each machine to get the RAM required for the virtual server. I can't really treat them as parallel systems either because no matter how good the virtualization software is, it can't abstract away two servers trying to peg the CPU at the same time.
So my question is - is there a standard method to estimating the hardware requirements for a virtualized system given hardware requirement estimations for the underlying virtual machines? Is there a +C constant for VMWare/MS Virtual Server overhead (and if so, what is C?)?
Virtual servers take advantage of the fact that most servers do not run at capacity for any length of time, and cpu cycles / memory can be shared. Therefore, it REALLY depends on how busy your virtual machines are.
It also depends on which virtual environment you are using, as to how well it can share memory. (I seem to recall that when I experimented with XEN there was no memory sharing at all - but I think that has now changed).
A development environment is a perfect place to get your feet wet with a virtual environment, and it's real handy to be able to "create a new server" in about 5 minutes if it is needed (even allowing you to over-allocate your resources temporarily in a pinch).
By way of example, we can host approximately 100 virtual machines using VMWare Infrastructure on 5 physical servers. Each of these physical machines has 4 dual core Xeon 2.6Ghz CPUs, 16Gb Ram, and 8 - Gigabit nics. (so an average of 20 VMs on each of these). We find our biggest limitation to be the amount of available memory.
I can say that having worked in a virtual environment for several years now, I wouldn't want to go back.
Hope this helps.
Cross-posted from How to improve Hyper-V performance:
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:
We're able to comfortably run 6-10 guests on each box, doing similar things (CI, dev servers, load testing, etc).