A virtual machine is bought as an instance type whose name encodes family, generation, processor and size, and its hourly price follows from exactly those attributes plus region, operating system and purchase option. Compute is the largest block of many cloud bills, and because the price factors sit in the name, the choice of type decides more about the bill than any later optimisation of the same machine.

How it works

All three providers sell predefined sizes from families that fix a ratio of vCPU to memory and a hardware generation. Within a family the price grows with size, at Google Cloud explicitly per vCPU and per GB, and it differs between families, generations, processor architectures and regions. The names follow three different grammars.

AWS

An EC2 instance type such as m7g.large reads from the left: m is the family (general purpose; c compute optimised, r memory optimised, t burstable, p and g GPU, i and d storage), 7 the generation, and the letters after it the options: g for AWS Graviton (Arm), a for AMD, i for Intel, d for local instance store volumes, n for more network and EBS throughput, e for extra storage or memory, z for high clock frequency. After the dot comes the size, from nano through large and 4xlarge to metal for bare metal, each step multiplying vCPU and memory. AWS bills per second with a 60 second minimum for Linux, Windows, RHEL and Ubuntu Pro; SUSE Linux Enterprise Server is billed as a full hour. Purchase options are on-demand, Spot, Savings Plans and Reserved Instances. In the Cost and Usage Report the instance appears as a usage type in the pattern region, BoxUsage, type, in the AWS documentation for example USW2-BoxUsage:m2.2xlarge, with line_item_operation RunInstances; EBS volumes, public IPv4 addresses and data transfer are separate lines.

Azure

Azure names sizes in the pattern family, subfamily, number of vCPUs, additive features, accelerator, version: Standard_D4s_v5 is the D family (general purpose; E memory optimised, F compute optimised, N GPU, M very large memory, L storage, B burstable) with 4 vCPUs, s for premium SSD capability, version 5. Further lower-case letters: a AMD, p Arm (Microsoft Cobalt or Ampere Altra), d local temporary disk, l low memory, m memory intensive, i isolated. A hyphenated number such as M8-2ms_v2 is a constrained vCPU size: the hardware of the 8 vCPU size with 2 vCPUs active. Azure bills for the full minutes a VM runs. The Linux price is the compute rate plus any distributor support; on the Windows price, Azure Hybrid Benefit lets you pay compute only because the existing licence is brought along. OS disk, data disks, public IPs and egress are charged separately. In cost details the VM sits under MeterCategory Virtual Machines with one meter per size, operating system and region; AdditionalInfo names the exact size as ServiceType, and ComputeHR_SW marks the line for paid software.

Google Cloud

Compute Engine sorts machine types into families (general purpose, compute, memory, storage, network and accelerator optimised) and series that fix generation and processor: N4 and C4 on Intel, N4D and C4D on AMD, C4A and N4A on Google's Arm processor Axion, Tau T2A on Ampere Altra, E2 as the low-cost series for everyday workloads. The name n2-standard-4 reads series, type, vCPUs: standard means roughly 4 GB per vCPU, highcpu roughly 2, highmem roughly 8, and -lssd or -metal add local SSDs or bare metal. The N and E series offer custom machine types such as n2-custom-4-8192, at a 5 percent premium over the predefined on-demand price. Google bills vCPU and memory as separate resources per second with a one minute minimum; Spot prices, committed use discounts and sustained use discounts for the series Google names lower the price. Licensed images follow the same per-second model and are charged in addition. The billing export shows no "machine", only one line for vCPU hours and one for GB hours, each with sku.description and location.zone.

What it means for your cost

The hourly price is set by size (vCPU and memory), family and generation, processor architecture (Arm types are a price list of their own at all three providers), options such as local disks or GPUs, the operating system with its licence, the region and the purchase option. The region alone can make the same type noticeably dearer; the instance price explorer compares current list prices per region.

The instance is never the whole bill: disks, snapshots, public IP addresses and data transfer run as separate lines, at AWS and Azure under their own usage types and meters, at Google as their own SKUs; which boundaries transfer charges is covered on data transfer and egress. A cost report by instance type therefore shows only the compute share, and a comparison between providers has to carry the side lines along.

For rightsizing it matters that the price factors are separable: a newer generation at the same size, a move to Arm within the same generation, or one size down within the same family are three different levers with three different risks, and billing data shows each as its own change of usage type, meter or SKU.

Where it goes wrong

  • Sizes compared by vCPU alone. Symptom: the "same size" machine at another provider is dearer or slower. Cause: a vCPU is a whole physical core or a hardware thread depending on the series, and memory, network throughput and local disks sit in the letters, not in the number.
  • A licence in one price and not in the other. Symptom: a Windows or SQL Server comparison comes out lopsided. Cause: one price includes the licence, the other assumes Azure Hybrid Benefit or a licence brought along, and at AWS SUSE is billed per hour rather than per second.
  • A previous generation that costs more than the current one. Symptom: the fleet runs on m5, v3 or N1 although the successors are listed cheaper per hour in the same region. Cause: each generation carries its own price, and nobody reads the price list again after the first launch.
  • A size chosen for the peak. Symptom: high cost at low average utilisation. Cause: the size was chosen for one day's peak, although burstable families, autoscaling and per-second billing exist for exactly that case.
  • A region chosen by habit. Symptom: the same type costs more in the usual region than next door. Cause: the region was picked for the first project and never checked again against price list, latency and data residency.

Sources

Read on 2026-10-15. Amazon EC2 instance type naming conventions, Amazon EC2 On-Demand pricing, CUR 2.0 line item columns, Azure VM size naming conventions, Sizes for virtual machines in Azure, Azure Virtual Machines Linux pricing, Understanding Azure virtual machine usage, Compute Engine machine families and series, Compute Engine VM instance pricing, Structure of Standard data export.