There are tons of options to choose from when picking the specific VM Instance Tier and Size to use when hosting a Virtual Machine (VM) in Microsoft Azure. Rather than choosing the number of CPU cores, amount of RAM and Disk space, you choose from a predetermined list of VM Sizes. This makes it much easier to spin up and scale up/down VMs at first, but not all Azure VM Sizes are equal in performance. You might think it’s as simple as picking how many CPU cores are allocated for your VMs, but different VM Sizes use different CPU Architectures and thus will vary in overall compute performance. For this reason, Microsoft has created a CPU performance measurement call the Azure Compute Unit or ACU.
What is an ACU?
ACU stands for Azure Compute Unit. This is a measurement created by Microsoft to provide a way to more accurately compare the vCPU performance (or Virtual CPU Compute Performance) across Azure VM Instance Sizes and Tiers (or SKUs). Using the Azure Compute Unit measurement, you will be able to identify which VM Size will fulfill your cloud compute performance requirements.
The base and starting value for Azure Compute Units (ACUs) is 100. The ACU value of 100 was arbitrarily assigned to the Standard_A1 instance size. Then all other instance size ACUs have been calculated and subsequently compared to the 100 ACU base of the Standard_A1.
While the Azure Compute Unit (ACU) measurement is just a general guideline, as actual performance can vary widely based on workload, the ACU measurement can be very helpful in comparing the overall, expected performance level of each VM Instance Size to another.
vCPU vs CPU?
Above it was mentioned that Azure Compute Units (ACUs) provide a way to accurately compare the performance level of the vCPU’s of on VM Size to another. The reason “vCPU” is mentioned instead of “CPU” is that VM Sizes in Microsoft Azure are assigned Virtual CPU’s (vCPU’s). A Virtual CPU represents a Virtualized CPU. Since these are Virtual Machines (VMs), the have all virtualized resources allocated. VMs still have full CPU resources, but the “vCPU” name just indicates further that these are VMs and not dedicated physical servers.
So, what about different vCPU architectures. If they’re Virtualized, then should they be all the same?
Actually, NO. While you are assigned one or more Virtual CPUs (vCPU’s) to your VM depending on the VM Size and Pricing tier, that vCPU still maps directly to a Physical CPU allocation. These are certainly NOT emulated CPU cores to provide vCPU’s. They are raw, bare metal CPUs that VMs are directly running on.
Different vCPU Architectures?
Each VM Instance Size / Pricing tier / SKU for Azure Virtual Machines, it based on utilizing very specific CPU hardware. The A-Series, D-Series, and G-Series were first introduced. The A-Series is equipped with Intel Xeon E5-2670 CPUs, and the G-Series is equipped with Intel Xeon E5 v3 family CPUs. Then from here, the Av2-Series and Dv2-Series were later introduced to be equipped with newer CPU technology / architecture. And, then more recently, Microsoft has started introducing the v3 VM sizes (Av3, Dv3, etc) that are equipped with even newer CPU architecture and hardware.
As you can see, each vCPU of different SKUs / VM Instance Sizes are certainly not equal to one another. Here’s a short table to give a couple examples of the different CPU architecture and hardware some of the VM Instance Sizes are equipped with:
|VM Series||CPU Architecture|
|A-Series||Intel Xeon E5-2670|
|D-Series||Intel Xeon E5-2660 v2 (Ivy Bridge)|
|Dv3-Series||Intel Xeon E5-2673 v3 (Haswell)|
So far all the VM Instance Sizes / SKUs within Microsoft Azure are built on Intel x64 architecture. This is the traditional CPU architecture used in enterprise datacenters.
As you are likely aware, the x64 CPUs aren’t the only CPU architecture in the compute space. ARM CPUs have been used for many years in embedded devices, Smartphone, Tablets, and other devices. We haven’t seen ARM CPUs be used to run enterprise datacenter workloads yet. Although, Microsoft does have version of Windows that can run on ARM CPUs. These are mostly used for end-user facing devices at the moment, but Microsoft is working on running Windows Server on ARM CPUs too. It is possible that we’ll be able to choose from either Intel x64 based or ARM based CPU architecture for hosting Virtual Machines in the Microsoft Azure cloud at some point in the future.
ACU’s per VM Size / SKU
Here’s a reference table from the official Azure Compute Unit documentation page that lists out the estimated ACU per vCPU measurement for most of the VM Instance Sizes / SKUs available.
|VM SKU||ACU / vCPU|
|A1 – A7||100|
|A1_v2 – A8_v2||100|
|A2m_v2 – A8m_v2||100|
|A8 – A11||225|
|D1 – D14||160|
|D1_v2 – D15_v2||210 – 250|
|D_v3||160 – 190|
|Ds_v3||160 – 190|
|E_v3||160 – 190|
|Es_v3||160 – 190|
|F1 – F16||210 – 250|
|G1 – G5||180 – 240|
|H||290 – 300|
|L4s – L32s||180 – 240|
|M||160 – 180|
Choosing the VM Instance Size / SKU based on the number of vCPU cores will lead you in the right direction in most cases. However, for those times when the individual vCPU core performance really matters when scaling your workloads then you can always use the Azure Compute Unit (ACU) measurements to compare SKU performance.