3

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.

Joel Coel
  • 12,910
  • 13
  • 61
  • 99

1 Answers1

5

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.

ewwhite
  • 194,921
  • 91
  • 434
  • 799
  • 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 03: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