vCloud Resource Allocation

A high-level overview of the VMware vCloud platform's resource allocation and how VMs consume purchased resources

Overview

Hosted Network's VMware vCloud (IaaS) platform partitions purchased resources into Virtual Datacenters, which are typically dedicated to a single end customer, which allows partners to easily manage and monitor their customer VMs.

You can think of these Virtual Datacenters as "Resource Pools", they behave similar to a physical ESXi host in the way CPU or RAM is managed. If you try to exceed the amount of resources assigned to the pool you will eventually hit performance issues (e.g. packet loss, latency, slugishness) as the VMs will fight for resources.

This is why it's generally a good idea to allocate additional CPU/RAM to prevent issues with running out of resources and impacting the end-user experience, it will also allow the VMs to burst higher than their allocated resources should they need to.

How does vCloud calculate resource usage?

vCloud allocates CPU slightly different to the way RAM and Storage is allocated. Specifically it calculates that 1 vCPU Core equals 1Ghz, so for every core you allocate to a VM it will deduct 1Ghz from the resources allocated to your Resource Pool/Virtual Datacenter. Whereas RAM and Storage are allocated in a direct 1:1 relation, so 1GB of RAM or Storage is the same as with a physical server or similar VM.

This vCPU allocation is used as an overcommit control within the vCloud platform and underlying infrastructure, it doesn't stop the VM from going above this 1Ghz per vCPU so if it has 4 vCPU and is running on a VMware host with 2.5Ghz cores it can use a total of "10Ghz" instead of "4Ghz".

However if the VMs within a resource pool exceed the allocated CPU resources vCloud will start to rate-limit the VMs in an attempt to avoid you using more than you have purchased and prevent other workloads from being impacted. This is more obvious with smaller Virtual Datacenters as the VMs will easily burst over the allocated resources.

What can I do to avoid my VMs being impacted?

Hosted Network engineers can assist you with avoiding your VMs being impacted by bursty workloads on other VMs in your Virtual Datacenter by changing some settings on your behalf. Specifically, the below settings can be modified:

  • CPU Share Priority - This setting specifies the priority of VMs that get access to CPU resources. A VM with a higher priority is able to take resources away from other VMs if the VM requires it. The shares are typically specified as "High", "Normal" and "Low".

  • CPU Reservation - This sets a baseline that the VM is guaranteed to have if the Virtual Datacenter is out of resources. For example if you have a total of 2Ghz CPU assigned and it is split between two VMs (each having 1Ghz reserved), they are both guaranteed to have at minimum of 1Ghz. But if one is only using 500Mhz then the other can use up to 1.5Ghz

  • CPU Limit - This is the opposite to CPU Reservation, it sets an upper limit on the CPU usage that the VM cannot exceed. So if you limit a VM to only using 2Ghz max it will never be able to go past this.

You can use all of the above together to impose lower and upper limits on the VMs and guarantee resources in varying situations. e.g. setting a minimum amount of CPU resources while not allowing a VM to go above a certain amount as well, reducing unexpected performance issues for occurring.

Last updated