Exposing the Cluster Reserve calculations in SCVMM using PowerShell

Recently,  I have been working with a customer who has a number of clusters in their VMM environment that appear with a Warning triangle next too the cluster icon in the console. The obvious question they initially put to me was "Why are my clusters over-committed?" to which I jokingly replied "Because VMM says so!".

Having finished rolling around laughing! I began to look into the calculations behind the feature. Trying to find good information on this feature, at the time, was extremely difficult.

In an attempt to publicize this feature further I would simply like to reiterate the information now available in a blog article by Hilton Lange: https://blogs.technet.com/b/scvmm/archive/2014/12/15/taking-a-closer-look-at-the-virtual-machine-manager-cluster-overcommit-algorithm.aspx

In Hilton's blog he talks about the 2 methods (Simple & Proof) and the 4 checks (Proof-simple, Slot-simple, Proof-full & Slot-full), VMM undertakes to attempt to prove that a cluster is not over-committed. If any 1 of the checks results in an "OK" (cluster not over-committed) VMM will mark the cluster as "OK".

  Proof method Slot method
Simple check Proof-simple Slot-simple
Full complexity check Proof-full Slot-full

So all of this information is great, but how do you know WHY or WHEN your cluster is likely to be Over-committed? The answer to both these questions would normally involve a lot of numbers and manual calculations. However following on from a PowerShell script I discovered (https://www.miru.ch/unveiling-cluster-overcommit-in-scvmm-2012-hyper-v/) I have created a method of checking all clusters, within a single HostGroup, to confirm if they are or indeed when they are likely to become over-committed. The PowerShell script only performs the Proof-full check on HostsGroups with a Cluster Reserve set to 1. Using the output report you will have the data to manually check the remaining methods and indeed in some cases where the Cluster Reserve is set >1.

The output file details what would happen to the memory resources of each host if it were to fail. The output also details the remaining cluster capacity in the event of each host failure. When attempting to pin-point a time when a cluster may become over-committed, by simply increasing either the memory allocated or demand, on a VM, the increased value will be deducted from each of the "Remaining cluster capacity (GB)" calculated for each of the host failure scenario.

It is my intention to develop this and further PowerShell scripts, to aid everyone to check and understand the Cluster Reserve feature as well as the people that wrote it!

If you have previous experience with this setting and have developed your own method of calculating your Cluster Reserve, please share them...this is the only way everyone (who needs to) will learn.

(The attached script is intended to be a guide and a method of exposing the values used to calculate the Cluster Reserve result)

Over-Committed_ProofFull_withOutput_v1.2.zip