To understand vSphere resource management, you must be aware of its components, its goals, and how best to implement it in a cluster setting.

Resource allocation settings for a virtual machine (shares, reservation, and limit) are discussed, including how to set them and how to view them. Also, admission control, the process whereby resource allocation settings are validated against existing resources is explained.

Resource management is the allocation of resources from resource providers to resource consumers.

The need for resource management arises from the overcommitment of resources—that is, more demand than capacity and from the fact that demand and capacity vary over time. Resource management allows you to dynamically reallocate resources, so that you can more efficiently use available capacity.

Note: In this chapter, "Memory" refers to physical RAM.

ESXi Resource Types

Resources include CPU, memory, power, storage, and network resources.

Note: ESXi manages network bandwidth and disk resources on a per-host basis, using network traffic shaping and a proportional share mechanism, respectively.

Using Physical Resources

You can use hosts and clusters, including datastore clusters, as physical resources with vSphere.

For hosts, available resources are the host’s hardware specification, minus the resources used by the virtualization software.

A cluster is a group of hosts. You can create a cluster using vSphere Client, and add multiple hosts to the cluster. vCenter Server manages these hosts’ resources jointly: the cluster owns all of the CPU and memory of all hosts. You can enable the cluster for joint load balancing or failover. See Create a vSphere DRS Cluster for more information.

A datastore cluster is a group of datastores. Like DRS clusters, you can create a datastore cluster using the vSphere Client, and add multiple datastores to the cluster. vCenter Server manages the datastore resources jointly. You can enable Storage DRS to balance I/O load and space utilization. See Creating a Datastore Cluster.

Utilizing Resources

Virtual machines are resource consumers.

The default resource settings assigned during creation work well for most machines. You can later edit the virtual machine settings to allocate a share-based percentage of the total CPU, memory, and storage I/O of the resource provider or a guaranteed reservation of CPU and memory. When you power on that virtual machine, the server checks whether enough unreserved resources are available and allows power on only if there are enough resources. This process is called admission control.

A resource pool is a logical abstraction for flexible management of resources. Resource pools can be grouped into hierarchies and used to hierarchically partition available CPU and memory resources. Accordingly, resource pools can be considered both resource providers and consumers. They provide resources to child resource pools and virtual machines, but are also resource consumers because they consume their parents’ resources. See Managing Resource Pools with vSphere.

ESXi hosts allocate each virtual machine a portion of the underlying hardware resources based on a number of factors:

  • Resource limits defined by the user.
  • Total available resources for the ESXi host (or the cluster).
  • Number of virtual machines powered on and resource usage by those virtual machines.
  • Overhead required to manage the virtualization.

Goals of Resource Management with vSphere

When managing your resources with vSphere, you must be aware of what your goals are.

In addition to resolving resource overcommitment, resource management using vSphere can help you accomplish the following:

  • Performance Isolation: Prevent virtual machines from monopolizing resources and guarantee predictable service rates.
  • Efficient Usage: Exploit undercommitted resources and overcommit with graceful degradation.
  • Easy Administration: Control the relative importance of virtual machines, provide flexible dynamic partitioning, and meet absolute service-level agreements.