How to right-size Azure VMs
Right-sizing an Azure VM means selecting a SKU that meets observed and expected workload demand with acceptable headroom. Low CPU is only a candidate signal. Review memory, disk and network throughput, latency, burst behavior, licensing, architecture constraints, availability, and planned demand before changing production.
Write the target SKU acceptance criteriaMatch capacity to workload constraints
Observation window
Use at least 30 days when it captures normal cycles; extend it for month-end, quarterly, or seasonal workloads.
Candidate threshold
Sustained low CPU may start review, but no universal percentage proves a VM is oversized.
Constraint match
The target SKU must satisfy memory, disk limits, network limits, accelerators, architecture, region, availability, and licensing.
Net savings
Monthly saving = current net monthly cost − target net monthly cost, adjusted for commitments and dependent costs.
A procedure with accountable owners
1 / Collect representative metrics
Inspect percentile and maximum CPU, available memory where instrumented, disk IOPS/throughput, network, latency, and restarts.
- Owner
- Platform + workload owner
- Cadence
- Monthly
- Verify
- Window covers known peaks and business cycles.
2 / Select compatible candidates
Filter regional SKUs by required features and limits before comparing price.
- Owner
- Cloud engineering
- Cadence
- Per candidate
- Verify
- No hard capability is lost.
3 / Test and schedule
Benchmark in a safe environment, define success and rollback thresholds, then use the normal change process.
- Owner
- Workload owner
- Cadence
- Per change
- Verify
- Test results and approval are recorded.
4 / Observe after change
Compare service indicators and billed cost across a representative post-change window.
- Owner
- SRE + finance
- Cadence
- After change
- Verify
- SLOs hold and net cost falls as expected.
Illustrative candidate review
- CPU
- P95 11%; max 38% over 35 days
- Memory
- Peak 54%; instrumentation confirmed
- Disk / network
- Below target SKU limits with 30% headroom
- Decision
- Candidate only; stage and benchmark before approval
Thresholds are illustrative, not universal production rules.
Check the workload constraints that CPU does not show
Confirm the candidate SKU's memory, disk throughput, network limits and availability before comparing its rate. Workloads with batch peaks or memory pressure need more than average CPU. When a required metric is unavailable, ask the owner for application evidence and treat the size recommendation as needing review.
Test the proposed size against representative demand and retain a rollback path. A lower catalog rate is an estimate until the change is implemented and billed cost is measured on the relevant customer pricing basis. Include any new storage or licensing cost in the comparison.
Write the target SKU acceptance criteria
For one candidate VM, record peak memory, IOPS, throughput and service latency alongside CPU. If memory is not instrumented, obtain workload evidence first. Define the test, maintenance window and rollback trigger before selecting the cheaper size.
Review a VM rightsizing candidateWhat not to do
- ×Using average CPU as the only signal
- ×Ignoring memory because the platform metric is unavailable
- ×Assuming a smaller SKU has the same IOPS and network limits
- ×Applying the change without a rollback trigger