Server virtualization has been great for IT. It promises to help drive up datacenter efficiencies while allowing applications to get all the resources they need. But, Virtual environments in general are very complex to manage. We have to look at all the workloads running in the environment and understand the tradeoffs we can and are willing to make between being able to assure performance and drive up efficiency.
VDI promises to allow us to achieve the management and cost benefits we saw with server environments in an EUC capacity, but it also introduces a new level of complexity within the environment. In order to achieve the greatest ROIs a non-persistent pooled methodology is used. The problem this creates is that it takes a key factor away from our arsenal, the ability to resize a machine.
Frequently virtual environment admins will resize a machine in order to make sure that it has the CPU and MEM resources it needs to continue to perform at a desired level. But, if we were to try doing this in a pooled environment we would just end up with a bunch of different sized VMs, and the end user could still end up on a smaller machine due to the random selection of the controller.
One suggestion a colleague of mine made is that we just resize the person. Wouldn’t it be great if we could get away with just telling people to use less resources? Unfortunately that’s a recipe for a bunch of complaints not a solution.
A common “solution” to this problem is to create classifications of users such as task worker, knowledge user, and power user and give them each a set of resources. This sounds like a good idea in theory but still doesn’t solve our original problem of how do I make sure everybody gets the resources they need while maximizing the overall efficiency. For instance what happens if I assign somebody who uses a lot of resources to a group with smaller instances, or what happens if I assign somebody who uses no resources to a group with larger instances? Not to mention the fact that this introduces more management complexity that we sought to avoid through VDI in the first place.
Since sizing of virtual machines within a VDI environment is nearly impossible to manage it becomes even more critical to find the right placement of VMs in order to assure performance. This in itself becomes a very complex problem because every user’s workload can be different. For instance a recent customer had two primary applications run on VDI instances. One was a database heavy app that drove high IO and memory utilization, and the other was a CPU heavy analytics app. In the pooled VDI model it was impossible to determine who would be using which app, when and where.
The customer had gotten into the habit of regularly throwing hardware at the environment in order to assure performance of both applications making VDI an increasingly expensive project. Here’s what the environment looked like before VMTurbo.
Several hosts with high memory utilization, reedy queue and ballooning issues.
By understanding all of the resources available on the physical machines as well as the demand from the VDI VMs VMTurbo was able to optimally place VMs on hosts as the demands for IO, memory, and CPU changed within their environment. After being in the environment for under 30 minutes VMTurbo was able to provide over 150 placement recommendations in order to assure the performance of the VDI environment.
After turning vMotions to an automated mode the customer saw an immediate ROI in terms of the number of support tickets opened by unhappy end users. Additionally VMTurbo was able to show that host density can now safely be increased by 30% within the VDI clusters allowing them to meet growth projections for the next two years without having to purchase another host. This was all achieved WHILE decreasing the overall risk of QoS degradation within the environment. Here is the desired state that VMTurbo was able to drive the customer towards.
Memory contention has been reduced and ready queues and ballooning have been eliminated.
VDI introduces a whole new set of complexity within a virtual environment. It’s virtually impossible to make sure that every user within the environment is able to get the resources that they need in order to do their jobs without being limited by IT. The problem becomes even more complex when the business dictates some level of cost savings and ROI must be achieved. VMTurbo can help both assure the performance of VDI environments while driving up the overall efficiency.
This article is about performance. Read more like it at the Performance, Efficiency, Agility series.