Placement....how do you do that voodoo?
Placement is the term we use to describe the processes of matching VM requirements to available host resources. This is useful when you initially create a VM, migrate a VM or deploy a VM from the library.
We broke down VM placement requirements into two buckets:
1) Hard Requirements - these are requirements that a VM absolutely needs a host to meet in order to run - memory and storage.
2) Soft Requirements - these requirements, if met by the host, allow a VM to perform more optimally and include CPU allocation, network bandwidth, network availability, disk IO bandwidth and free memory.
In the user interface, VMM gives you a star rating system for hosts with a range of zero to five stars. If a hard requirement is not met (i.e. not enough memory), the host automatically get zero stars and the product will block you from placing a VM on that host. If a soft requirement is not met, this also affects the star rating to various degrees depending upon the weightings and placement algorithm that you use (see below). You can also scope the placement process to have SCVMM look only at a subset of hosts by selecting the target host group for placement at the top of the screen.
For networking, if you're migrating a VM between hosts and the network a VM is currently connected to is not available on the new host (we do this comparison based on virtual network names to figure this out), the host gets zero stars but we don't block you from selecting that host since the technically the VM can run, it just won't have the same network connectivity. In the next release, we'll also let you specify whether a VM requires high availability or not in which case we'll look for hosts that are configured in a cluster. You'll also notice that there is a "SAN" column on the ratings screen. You'll see a check mark here if the target host is properly configured to enable SAN-based transfers which are much quicker than standard LAN transfers. I'll have a separate posting on SAN transfers in the future but if you want more details on this, you can get it here.
While building this feature, customers told us that they wanted good visibility into the placement process so we added features to improve the visibility into why a host gets the rating it does in the 'rating explanation' tab below the placement screen.
You can also customize the placement algorithm by adjusting performance parameters for a particular VM. Just click on the "customize ratings' button on the placement wizard screen. The first thing you'll notice is that we support a couple of algorithms - load balance and resource maximization. You'd use the load balance algorithm if you have a pool of hosts that you want SCVMM to evenly distribute VMs across. You'd use resource maximization if you'd prefer to fully saturate a host completely before moving to a new one. This is useful if you're looking to really max out the utilization of a machine. As I mentioned in a previous post, at the host group level, you can also set host reserves so that the system doesn't exceed a certain allocation threshold. This way, you can ensure your environment has enough 'spare' capacity around for emergency deployments in the event of failures or new requirements. The other slider bars in the UI let you modify the weighting/importance various soft requirements. Ultimately, the algorithm we use to generate the host rating, we use a formula something like this:
Host Rating = (Free CPU * CPU Weight) + (Free Memory * Memory Weight) + (Free Disk * Disk Weight) + (Free Network * Network Weight)
In order to do this placement accurately and across a variety of hardware, we use technology originating from Microsoft Research which helps normalize performance characteristics across a hardware types using models. When the technology was first developed, it was kind of a solution looking for a problem....and along came virtualization which was the perfect problem. Here's a slide from a technical presentation we often give on placement that describes the various inputs and outputs of the process. As you can see, it's pretty sophisticated but at the end of the day, you just need to deal with the rating that it produces and leave the heavy lifting to us.
In the next version of SCVMM, we'll be improving placement in several ways. Since we'll be supporting multiple virtualization platforms (Virtual Server, our hypervisor and VMware), placement will need to ensure that it picks hosts appropriately based on the capabilities of the platform. For example, if you want a 64-bit VM, Virtual Server-based hosts will be given zero stars. More superficially, the user interface for the star rating screen is pretty crammed with information and we're looking at ways to make it easier to read and perhaps change the layout. As the new UI comes on board, I'll post some early screen shots here as well.