Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm looking for a basic guide to get started with overscribing host hardware for my virtual machines. My basic scenario is below, but I'm not looking to address this particular case so much as general information for how to go about allocating the types of resources described, and measuring results.

Let's say I have a server that acts as a VM host. It has a 6-core processor with hyper-threading (12 virtual CPUs) and 12 GB a ram. The server currently has six VMs. The resources allocated to each VM vary somewhat from 1 to 4 CPUs and from .5 to 4GB of RAM, depending on the expected load or importance of the particular VM. The total allocated resources currently add up to exactly 12 GB RAM and 12 cores. This includes a small reservation for the VM host.

I can't help but feel that I'm leaving resources on the table. Not every virtual server is 100% busy all the time... far from it. I expect I could improve overall performance by making more resources available to the virtual servers, such that busy servers are able to take advantage of resources left idle by free servers. I hope that's clear.

I want to know how to capture those idle resources. How do I measure how much is really free? How much can I really oversubscribe? How do I monitor the situation as time passes (systems tend to grow, and so I expect an appropriate over-subscribe today may not remain that way tomorrow). Do I need to do anything special when increasing the resources so the host knows how to share if things get tight?

My host is Hyper-V on Server 2008 R2 but, again, I'm really looking for more general information. Details about VMWare, Xen, etc are welcome.

share|improve this question

closed as not constructive by mdpc, Khaled, Tom O'Connor, Dave M, Michael Hampton Feb 12 '13 at 23:29

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Can you give a more specific case? They various hypervisors all vary in their approach to this. – ewwhite Feb 11 '13 at 22:59
See the last paragraph – Joel Coel Feb 11 '13 at 23:00
Surely this would boil down to looking at the utilisation on the hyper-visor machine, and seeing what leeway there is ? – Sirex Feb 11 '13 at 23:02

Why do you feel you're "leaving resources on the table"? Systems don't need to run fully-utilized.

A few things to note...

  • Six Hyperthreaded cores doesn't really equal twelve available physical CPU's, so you're already oversubscribing to a point.

  • In virtualization, you tend to exhaust RAM far before CPU resources...

  • Memory overcommitment is going to be where you'll see the most pressure and contention. The effects will be felt more than CPU starvation.

  • Using the VMware example, you have memory ballooning, compression and deduplication available. I would treat oversubscription of RAM differently in VMware than I would in some of the other virtualization technologies.

  • Another VMware example: It's possible to set share levels (resource pools) to indicate which VMs should take precedence when resources are low. That's how you ensure that your database server gets the RAM/CPU/Disk/Network priority is needs versus your domain controller in a tight situation.

share|improve this answer
To answer the "leaving resources on the table" remark: I have four servers like this. If I can't improve performance, perhaps I could consolidate further without degrading it? The problem is that I don't know, and I don't know how to measure to find out. – Joel Coel Feb 12 '13 at 3:11
Joel, You should use Performance Monitor to capture statistics on utlization. Be sure to use the counters that start with "Hyper-V" so that you get accurate information. There are quite a few items that relate to logical processors, virtual processors (for a given VM even), dynamic memory, memory in general and so on. – Harold Wong Feb 12 '13 at 18:38

Not the answer you're looking for? Browse other questions tagged or ask your own question.