Summary
If you already have any tool that ingests your Azure consumption data (e.g. a TBM tool like Apptio), you can get an initial idea about your cloud savings potential. Although it is not purpose-built for analysing cloud consumption and demonstrating potential savings, it has all the capabilities you need to help you gauge the waste rate of your cloud estate.

Before we proceed further, it's essential that your Azure costs are ingested on a monthly or more frequent basis. All you need for analysis are filters and pivot tables, and while I provide examples using Apptio, you can achieve similar results with Excel or a CSV tool like CSViewer. Excel has its limitations when handling large CSV files, such as a monthly Azure FOCUS export.
With a bit of creativity and using the classic "Import Data from Text file" wizard (just be careful to select the correct decimal delimiter!), you can achieve everything mentioned below in Excel. But, really, consider something like CSViewer instead of Excel. It's so much better at reading huge CSVs.
What we will be looking for in your cloud usage data
Azure has continuously innovated over the years, resulting in a vast selection of services known as Stock Keeping Units (SKUs). While these services may appear similar at first glance, they are not equal in performance. Based on our measurements of Virtual Machines and App Service Plans—using freely available tools like Passmark and Diskspd—we have reached a conclusion that Microsoft Learn supports with Coremark results, particularly for Virtual Machines: you really don't want to run your workloads on the Ev3, much less on the Dv3 series.
Yet, still a lot of you do.
It's still the default series you're offered when you open the Azure Pricing Calculator to check for Virtual Machine prices. It's still the default series when you manually build a Virtual Machine in the Azure Portal.
At first glance, a D16s_v3 appears identical to a D16s_v5; both configurations include 16 vCPUs and 64 GB of RAM. But what sets them apart?
The D16s_v5 offers approximately double the vCPU performance of the D16s_v3, along with significantly improved network and storage capabilities. According to an engineer from one of our customers, using the D16s_v5 "finally feels like working with a VM in your own datacenter again." In contrast, the third generation was viewed as "sluggish" by both administrators and end users.
"If the vCPUs are twice as fast, can I use half as many?" Yes, you can assume this will work in almost every case.
We need to check if Azure offers a VM SKU that provides half the number of vCPUs (16 divided by 2 equals 8) while still maintaining the same amount of RAM (64 GB). Fortunately, we have a suitable option: the Memory Optimised VMs, specifically the E Series.
You can substitute a D16s_v3 virtual machine (VM) with an E8s_v5 VM. The E8s_v5 is approximately 40% less expensive than the D16s_v3, primarily because vCPUs are the costliest component of a virtual machine.
This addresses the question we posed earlier. We will analyse your cloud cost data for similar patterns and provide formulas to estimate the potential savings you can achieve by implementing these changes.
Pattern 1:
Look for Dv3 / Dsv3 Virtual Machines with 16 cores or more: D16_v3, D16s_v3, D32_v3, D32s_v3, D64_v3, D64s_v3, D96_v3 and D96s_v3.
Summarise their cost for the last full month, then multiply it by:
0.6 to see what these VMs will cost when converted to E(half the number of vCPUs)(s)_v5,
0.4 to see your potential savings.
Columns to check for this pattern:
FOCUS: ChargeDescription
Billing / Amortized Cost Export: MeterName
Apptio: Procedure
Collateral savings: Halving the number of vCPUs on a virtual machine (VM) reduces the number of required licenses by half, although certain minimums apply for Windows Server and SQL Server when utilising the Azure Hybrid Use Benefit.
This not only halves the licensing costs for the VM but also lowers its infrastructure expenses by 40%.
More patterns to check for
What works for Dv3 will often also apply to Dv4, although it's less certain. A fully utilised D16s_v4 cannot simply be replaced by an E8s_v5. However, if the D16s_v4 operates at only 60-70% utilisation, it can still be a suitable alternative. While the billing data does not tell you the level of utilisation of any Azure resource, experience indicates that two-thirds of our customers’ VM costs are associated with VMs that rarely use more than 60% of their resources. Therefore, let's make some approximations for our next pattern.
Pattern 2:
Do the same lookup as in Pattern 1, but now for D*v4.
Summarise their cost for the last full month, then multiply it by:
0.73 to see what the VMs will cost when converted to E*_v5
0.27 to see your potential savings
If you need more precision
Months can have 28, 29, 30, or 31 days. Most Azure IaaS services have a cost calculated per hour, with one of the notable exceptions being disks, which have a fixed monthly cost regardless of the number of days in the month.
Most Azure services are billed per hour, but disks have fixed monthly costs — making daily averages tricky.
If February is considered the last full month, you might find that you're estimating costs that are about 10% less than the average monthly cost.
This is why the Azure Pricing Calculator uses 730 hours to estimate the average monthly cost of a Virtual Machine, as the average month consists of approximately 30.4 days.
For more precise calculations, you can summarise the costs for the last completed month, divide that total by the number of days in that month, and then multiply by 30.4.
Even more patterns to check for
We have noticed that many of you are still using the "license included" option for your Windows Server OS licenses. Unless you are running B/Bv2-Series virtual machines (VMs), it is generally not advisable to rent your Windows Server licenses from Azure.
Purchasing AHUB-eligible Windows Server licenses, regardless of the channel (whether through your EA, from your CSP, etc.), will provide significant savings:
At least 2 times cheaper for all VMs with 2 vCPUs (such as an E2as_v5; the 'a' indicates AMD, and I'll explain more about that later).
At least 4 times cheaper for all VMs with 4 vCPUs (like an FX4mds).
At least 8 times cheaper for all VMs with 8 or more cores (such as a D8ads_v5).
Depending on your Customer Price Sheets, your mileage may last significantly longer than the numbers I mentioned earlier. The highest savings observed to date were for a Tier D EA client who held AHUB-eligible perpetual Windows Server licenses with Software Assurance. By switching from "renting a license" to "bringing your own license" for virtual machines (VMs) with 8 or more vCPUs, they achieved a reduction in license costs by a factor of 20.8 times. To put things in monetary perspective, it's ~$5 instead of $100.
Switching to BYOL for VMs with 8+ vCPUs can reduce Windows Server licensing costs by up to 20x.
Pattern 3:
Look for Virtual Machines with "Windows" in its ChargeDescription / MeterName / Procedure.
Do the summary / normalisation steps from the earlier patterns and multiply it by:
0.75 for VMs with 2 vCPUs (new costs) / 0.25 (savings)
0.62 for VMs with 4 vCPUs (new costs) / 0.38 (savings)
0.5 for VMs with 8 or more vCPUs (new costs / savings)
🖐 We identify licensing risks and handle audit exposure before it becomes a problem: Microsoft Audit Defense.
Pattern support
You may be wondering, "How can I easily sort VMs by their vCPUs?" There are a couple of approaches you can take. One option is to use the methods from Patterns 1 and 2. Alternatively, you can utilise the x_SkuAdditionalDetail (for FOCUS) or AdditionalDetails (for pre-FOCUS exports), or even the relevant data from Apptio and similar sources. These columns contain nested JSON data, which includes a field for VCPUs formatted as VCPUs = [number].
If you prefer a simpler approach, you can skip the complexities of these three multipliers. An average assumption is that VMs will typically become about 33% cheaper when switching from rented to owned licenses. This assumption is reasonable for the purpose of this exercise, which aims to give you an initial idea of whether you're inadvertently sending donations to Microsoft.
More patterns
We have curated a library of over 30 cloud economic optimisation patterns that help us quickly identify the total savings potential of your cloud usage. If you bring us in for an initial assessment, we will apply these patterns to your cloud consumption data. This will provide you with a fairly accurate estimate of your savings, along with an estimated time frame for realisation, should you choose to book our Cloud Economic Optimisation service.
Bonus Pattern 1:
AMD VMs are on average 10% cheaper than Intel VMs while offering virtually no downside anymore (at least none we and our expert engineers are aware of, though the risk is never zero).
Summarise the cost for all your VMs that do NOT have a small 'a' in their ChargeDescription / MeterName / Procedure and multiply it by:
• 0.9 for what your VM costs could be if you cut all VMs over to AMD
• 0.1 to calculate the savings derived from doing that
Bonus Pattern 2:
Summarise the savings from the four patterns and multiply by 3. That's where your total optimisation potential will likely sit.
These five patterns can help you determine whether your cloud environment is a top performer (which is rare) or if it falls within the industry average. The lowest waste rate we ever encountered was 7%. According to Flexera's State of the Cloud report, the average waste rate is about 30%. We have been able to drive cloud cost optimisations that reduced costs by up to 50%. Regardless of where you stand on this spectrum, you are not alone. We look forward to hearing from you if you believe we can assist you in turning these sample patterns (and more from our complete library) into realised value for you and your company.
🖐 We handle the negotiation process and help you secure better Azure terms: Microsoft Azure Contract Negotiation.