Getting Started with Resource Management in VMware vSphere
As with money in your personal finances or gas in your gas tank, vSphere resources in your virtual infrastructure are never a problem – until you have too little of them. Once you run out of vSphere resources, that’s when your company’s applications start to grind to a halt, your end users start to call and complain, and your CEO/CIO calls you on your cell phone, wanting to know what’s going on. Undoubtedly, your job is on the line when it comes to proper management of vSphere resources. If applications run slow, you look bad. Additionally, the proper management of the datacenter infrastructure and vSphere resources are really something that your company’s management takes for granted as something that should just “work”, like the telephone. As you likely know, managing resources can be tough as, in most cases, you don’t have any control over the resources that are demanded by the applications. You have to simply try to “predict” the resources that will be demanded, both now and in the future, by your applications and plan accordingly to provide those resources.
So let’s say that you are new (or need a refresher) when it comes to managing vSphere resources. What do you need to know to get started?
vSphere – Physical vs Virtual
When you consolidate your physical servers into virtual servers with a hypervisor like VMware vSphere, one of your major goals is to drive up higher utilization of the physical server resources – CPU, memory, disk, and network. Because so many traditional physical servers sit idle, virtualization is a great solution as it helps you to gain greater return on investment (ROI) with that hardware.
However, the question always remains, with a goal of driving up utilization, how far do you push it? If you push utilization too far then your applications will suffer. While in some perfect world, you could run your servers at 99% or 100% utilization and the applications would perform perfectly, it’s not realistic today. So, the goal with virtualization is to drive up utilization from an average (note I said average, not real-time) utilization of 2-5% to 70-80%. By keeping utilization around 70-80% of CPU and memory, you can gain much greater ROI but without negatively impacting applications running in the virtual infrastructure.
Another challenge with vSphere resource management is the understanding and correlation between the physical resources on the server (CPU, memory, disk, and network) to the virtual resources created by the hypervisor – the virtual CPU, virtual memory, virtual disk, and virtual network.
vSphere makes those virtual resources appear to be unlimited but, if you know how vSphere works, you should know that virtual resources are not infinite but, because of hardware abstraction, it’s important that they appear to be so.
Thus, it’s your job to manage both physical AND virtual resources.
vSphere Resource Types
In VMware vSphere there are a variety of resource types that you need to know about. They are:
The CPU, memory, storage, and networking resources are all expected but the “power” resource might be unexpected. In some datacenters there may be an unlimited amount of power (at least today) but it is still a finite resource that needs to be monitored and, in many cases, actively managed. vSphere can provide power utilization statistics for hosts and can help to reduce power utilization with distributed power management (DPM), which consolidates VMs when utilization is low on fewer hosts and puts unused hosts to sleep.
Figure 1: vSphere Performance Monitoring in the Web Client
vSphere Resource Providers and Consumers
You have the resources above but who provides them and who consumes them? In the case of the providers, yes it is the physical server hardware that provides it but, to be more detailed, in vSphere resources are provided by:
- Resource pools
- Datastore clusters
It’s the clusters of hosts that are usually providing resources in large enterprise virtual infrastructures and then those resources are distributed using distributed resource scheduler (DRS). In the case of storage, it’s the datastores that are clustered into datastore clusters and then the I/O utilization and the datastore capacity can be balanced, as needed, using storage distributed resource scheduler (SDRS).
But what about consumers? The whole reason you have the virtual infrastructure is to run business critical applications. Those applications are run inside vSphere virtual machines and the virtual machines are configured with a specific amount of resources. Thus, it’s the virtual machines (and their resource allocations) that are the ultimate consumers of the vSphere resources, provided by the resource providers.
Why Manage Your Resources?
We talked earlier about why it’s important to manage resources, in general. If you don’t, apps run slow and (if it goes on for too long) you lose your job, right? To be more specific, the reasons that resource management are so important are for:
- Performance isolation – while the virtual infrastructure is a shared resource, you still need to ensure that your VMs and applications have predictable performance. You can’t have apps run great one day, poor the next, and just say “oh well, it’s a shared resource, nothing I can do about it’. Instead, you need to ensure that active VMs don’t monopolize the resources and slow down the performance of other, even less active, VMs. Of course, this is especially true if you have different types of workloads. For example, a file transfer server and a virtual desktop used by an end user would be likely to compete with one another. When a heavy file transfer load is happening, it’s likely that the virtual desktop would run slow. For this reason, you need to configure clusters, resource pools, and shares (discussed more later).
- Efficient utilization – one of your goals of consolidation with virtualization was to maximize the server investment. You need to manage your resources simply to ensure that this continues. For example, you want to make sure that virtual machines are “right sized”, meaning that VMs that need resources don’t have too few and VMs that don’t need as many resources aren’t allocated too much (creating waste).
- Meet service level agreements (SLA) – whether you are managing a physical or virtual infrastructure, you need to ensure that your customers are happy. Perhaps you have formal agreements with customers about their performance expectations, perhaps not. Either way, you need to know what normal and acceptable performance is (as documented in a baseline) and then monitor the infrastructure over time to ensure it doesn't deviate from that acceptable level.
What is Admission Control?
You may have heard the term “admission control” when used with vSphere resource management. In vSphere with high availability (HA) features, there is the concept of admission control. For virtual machines to be powered on, and “admitted” to the cluster, there must be resources available to fulfill the needs of HA cluster. In other words, the admission control is there to prevent the HA cluster from being overloaded and not being able to power on the machines it aims to protect. While some people do disable admission control, it’s not recommended.
Managing resources in vSphere isn’t something that is optional. While many admins overlook resource management, sooner or later, they will be forced to look at it when they have a resource problem. It’s better to take the time to understand resource management, know your infrastructure, know your applications, and develop a performance baseline ahead of time than to do “damage control” when resource contention arises.