Friday, May 10, 2013

Intelligent Placement and Dynamic Optimization in VMM 2012 SP1

This blog post will cover what Intelligent Placement is in VMM 2012, how it works and how it fits into Dynamic Optimization.

High-level overview of Intelligent Placement

When you deploy a virtual machine with VMM, there is a lot going on under the hood to ensure that you will have a successful deployment. Things like hardware configuration and host resources is critical, and also consistency when you deploy to a cluster. In summary, there is a lot of variables in the mix that can give you a warning or error. Some of the warnings and errors you might get could seems irrelevant to you at first, but VMM like to ensure that your environment is fit, healthy and properly configured.

 This is why I am writing this blog post to enlighten you to be able to understand what is going on and how to correct these things. I’ve seen a lot of consultants, customers and forum users blaming VMM for not being able to deploy a virtual machine, while it is successful when using Failover Cluster Manager or/and Hyper-V Manager.

Virtual Machine Manager – The Management layer and its intelligence

Once you add your virtualization hosts (Hyper-V) to VMM, the VMM agent gets installed as part of the process.

The VMM management server communicates with its agents on the hosts and get the information its need to detect how the hosts are operating. The Fabric workspace in VMM is where you configure your infrastructure – the building blocks for your datacenter and cloud. This will include storage, network and computing power. Computing power in this context is equal to virtualization hosts and the different server roles required supporting their life cycle. You can configure Host groups within VMM and the host groups contain several properties for the hosts it contains.

One of the properties that is relevant to this blog post and intelligent placement is host reserves and dynamic optimization.

You can specify an amount of resources that should be reserved for the hosts within the host group at all time. VMM will bring this (among other variables, as we will see) into consideration during deployment of virtual machines and services. And just to be a bit more complex, you have the opportunity to specify host reserves on each host individually as well. As you can see, there is a lot of things to be aware of. Someone should keep this in mind all the time. There might be just you that is deploying virtual machines in your organization, or other administrators as well. Luckily, VMM is our rescue here and keep track of this all the time.

Networking is another major factor that may affect the deployment. This is also something you map to your host groups, so that VMM is able to tell if a virtual machine can be deployed to these hosts or clusters and ensure network connectivity.

Imagine this in a huge environment. You would probably need a couple of spreadsheets to keep this documented, and remember you would have to maintain it too.

Dynamic Optimization

When you have a cluster managed by VMM, you can enable both Dynamic Optimization and Power Optimization at the host group level. Dynamic Optimization will load balance the cluster(s) when enabled, based on the configuration you specify. You can decide how aggressive it should be (move virtual machines for less gain) and how frequently the optimization should run. Power Optimization will power your hosts on and off when needed, to support the workload. Power Optimization requires Dynamic Optimization to be enabled and that your hosts are configured for out of band management.

Dynamic Optimization is one of the features you should really care of if you want to enable a private cloud and have a dynamic environment for your virtual machines. Instead of check the state of your cluster, hosts prior to a new virtual machine deployment, make sure you have enough resources; VMM will do this for you thanks to intelligent placement, and ensure that the environment is correctly balanced with dynamic optimization.

Dynamic Optimization was first new in VMM 2012 and did not require SCOM integration to work, as it required in VMM 2008 R2.

So instead of using a SCOM agent on your hosts to get this information, VMM monitors and acts natively in the VMM service with the VMM agents instead and relies on the intelligent placement feature.. Since VMM is now in control of it, you will have a centralized decision maker seeing your cloud fabric in context.

We now know that Intelligent Placement is the enabler for Dynamic Optimization and you should really use Dynamic Optimization (and eventually Power Optimization if possible) when managing your cloud environment. We will now have a look at some of the checks that intelligent placement is doing for you

What does Intelligent Placement actually check before it places its virtual machines on the hosts?

Platform type (Hyper-V, XenServer, VMWare)
Three different hypervisors is potential equal to three different kinds of errors.
Hyper-V has its own disk formats and scalability limitations, and the same goes for both VMware and XenServer. If you try to deploy a virtual machine with VHDX disks to an ESXi host, or trying to deploy a VM that has Dynamic Memory enabled when the hypervisor does not support it, this would fail beyond recognition. Intelligent Placement will check this, and you can create hardware profiles for your virtual machines that matches the three different hypervisors that VMM supports and categorize these in the library.

CPU compatibility
Make model, stepping and architecture.
A known rule in the Hyper-V world is that you can perform Live Migration between hosts as long as the CPU is from the same manufacturer. You can also enable the option to allow migration to different CPU architectures on the HW profile for the virtual machine. This is something that VMM checks for you during deployment and intelligent placement.

Host Reserves
As mentioned earlier, each host group and each individual host can have its own reservations. Intelligent Placement will ensure this will be considered during placement of VMs so you do not overcommit your hosts and clusters. 

Logical processor count on the host
With Hyper-V in Windows Server 2012, you can have as many vCPU’s within a virtual machine as there are logical CPU’s on the hosts. The maximum number a virtual machine supports is 64 vCPU’s.
To summarize, if you deploy a virtual machine with 14 vCPU’s and the host only has 8 logical CPU’s, this will result in an error telling you what is going on and why it is failing.

NUMA configuration match between VM and host
VMM detects and check the NUMA configuration to make sure nothing is in disharmony before it deploys a virtual machine.

Snapshot compatibility
Compatibility on migration or deployment from libraries will be checked during intelligent placement.

Host state
Checks if the hosts are available for placement, responding, has healthy agents and so on.

Networking
This could probably be an entire blog post by itself. Networking plays a huge role in VMM, and VMM is responsible and able to ensure that everything is properly configured. Network connectivity for the hosts groups, associated physical network adapters on the hosts to the right logical networks, VM networks associated with the right logical networks according to the host groups and hosts, if network virtualization is enabled on the logical network and/or the logical switch, native port profiles, if the load balancer is available for host group and much more is checked both during placement and during Dynamic Optimization.

Possible owners, preferred owners (Cluster)
Now in VMM 2012 SP1, you can specify both possible owners and preferred owners for each virtual machine. This is a setting we know from Failover Cluster in Windows Server and VMM and these settings are now exposed in VMM. VMM will bring this into consideration during placement and when Dynamic Optimization kicks in.

Availability sets and Anti-Affinity settings
When you configure availability sets for the virtual machines, VMM will not place these virtual machines on the same hosts. Please note that this is not a hard block.

Machine name length
Allowable characters in VM name per platform.

Allowable characters in VM name
This setting is individual to each platform.

Disks
Disk matching, space, classification, disk IO capacity, shared disk type, and pass-through disk checks.

Cluster overcommit checks
VMM can configure ‘cluster reserves’ for each cluster. If the value results in overcommit for your cluster, you’ll get a warning during placement, and dynamic optimization might not run as expected.

RemoteFX
Checks if RemoteFX is available on the hosts compared to the VM configuration

Each of these checks is taking into account on every deployment, migration, dynamic optimization, maintenance mode and is continually evaluated by intelligent placement so that the appropriate actions can be taken if there are any problems.

I would like to thank Hilton Lange on the VMM team for providing me with valuable insight and tips to create this blog post. Thank you!

There is a lot more going on, and I will likely be updating this blog post when something new is added – or detected on the way.

No comments: