There was a time when it was easy to pick a kind of Azure virtual machine; you could have an A-series VM of this spec, or an A-Series VM of another spec. Over time, Microsoft has released new kinds of virtual machines. We have seen the A-series grow, and then we got D-series and G-series virtual machines. All offer something different and it can be confusing for Azure novices to figure out which one is right for their current deployment. I will look at each series of virtual machine in this article, and this should help you determine when each is appropriate for your employer or customers.
Please note that Microsoft is constantly changing Azure and that this article could be made out of date within hours of being published. The Azure pricing guide for virtual machines is the best place to start looking for information. You can get more in-depth information on MSDN. I have not included pricing because that is time, region and currency dependent.
There are currently four series of virtual machine that you can deploy:
Note that the A series does have a pair of specifications that are referred to as “network optimized”.
When you deploy an Azure virtual machine, all resources are assigned to the virtual machine. Hyper-V admins will understand what some of the implications of this are. The logical processors of the host are reserved for the virtual processors of the virtual machines; this means that virtual machines are not time-sharing and should achieve predictable processor performance levels.
Memory is fully assigned; there is no usage of Dynamic Memory. One of the benefits of this is that your virtual machine will be NUMA aligned; any NUMA-aware guest services will have the best mapping between processor and RAM on the host’s motherboard. Have a look at the memory sizes and you have some clue of the physical host specification.
A feature of Windows Server vNext Hyper-V (with a SMB 3.0 storage dependency) can be found in Azure virtual machines; every series has a guaranteed IOPS per data virtual disk SLA. And you may also see a banding approach (A-series) where if you pay more, you get more IOPS potential.
A carefully planned deployment might feature virtual machines spanning specs, tiers, and plans, all working together in a unified deployment that makes the best of each offering’s capabilities and pricing.
The A-series virtual machine series is the general purpose virtual machine type on Azure. A typically balanced deployed will feature way more of these “general infantry” virtual machines than the other “special forces” types.
There are two tiers of A-series virtual machine:
If you opt to go with Basic A-series virtual machines then you can choose from the below specifications. Remember that specifications cannot be customized; you must use one of the below options.
Moving up to a Standard tier offers you more options, including the addition of faster data disks, load balancing (internal and external), and money-saving flexibility with auto-scale.
One of the “gotchas” that has caught me out is that the specs do not necessarily grow linearly. Sometimes we want a VM with lots of RAM, but not a lot of processor. Note that there is a jump between the A4 (8 vCPUs and 14 GB RAM) and the A5 (2 vCPUs and 14 GB RAM); this is reflected in the price with the A5 being less than half the cost of the A4.
The A-series includes a network optimized branch of virtual machines. The Standard (only) A8 and A9 offer 40 Gbit/s Infiniband network connectivity with Remote Directory Memory Access (RDMA) for high bandwidth and low latency data transfers. If you are operating message passing, HPC, number crunching, or something similar then the A8 or A9 might be for you. The question to ask is: if I was running this on premises, would I need a Mellanox network card? If the answer is yes, then these are the VM specs for you.
All Azure virtual machines feature an additional temporary drive that is assigned the letter D. The D:\ drive is typically used for paging. We are advised never to use this drive for any permanent data (such as file shares) but there are ways that it can be used.
Some workloads, such as databases, have a disk-based cache. You can greatly increase the performance of dependent applications by placing this cache onto a local SSD. The D-series virtual machine makes this possible. Each host features:
The D-series (Standard only) comes in different specs, each with a differently sized SSD cache.
I would caution anyone working with Azure not to rush to D-series virtual machines. I’ve seen people using this series for small domain controllers. That a ludicrous waste of money!
Maybe you have a workload that needs local SSD caching and SSD for the normal application data too? Microsoft added Premium Storage to Azure recently; this is a shared SSD option that you can place your data disks onto. Data disks can reach up to 5000 IOPS and 200 MB/sec transfer speeds each.
The pricing for DS-series virtual machines matches that of D-series virtual machines – you’ll be charged differently for storage because D-series virtual machines are on Standard HDD storage whereas DS-series virtual machines must use one of the above 3 disk specs on SSD-based Premium storage.
If you have a workload that requires a lot of memory, such as caching SQL Server 2014 databases in RAM, then the G-series or Godzilla virtual machines are for you. These machines, like the D-series, make use of a host-local SSD drive to place the temporary drive for performance. But the G-series virtual machines are sized to provide much more RAM.
There are scenarios where you need a virtual machine to span two virtual subnets in Azure, such as a virtual network appliance or proxy/firewall. This requires you to have one virtual NIC per connection. By default, Azure virtual machines have just one virtual NIC but some specs support more than one:
|Maximum NICs||VM Size|
|2||A3, A6, A8, D3, D12, G3|
|4||A4, A7, A9, D4, D13, G4|
|1||All other VMs|