Ultra Disks peaking under 20% of provisioned IOPS that a Premium SSD tier could serve
What does ZopNight detect here?
ZopNight flags an `UltraSSD_LRS` managed disk whose combined read and write peak over 30 days stays below 20% of its provisioned IOPS and still fits the Premium SSD tier for its size. The saving is the full Ultra cost, capacity plus provisioned IOPS plus provisioned throughput, minus the monthly price of that Premium tier.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-1308 |
| Category | rightsizing |
| Severity | medium |
| Metric | Composite Disk Read/Write Operations/sec (30-day peak) |
| Threshold | peak IOPS < 20% of provisioned |
| Evaluation window | 30d |
| Source | ZopNight |
| Permissions used | Microsoft.Compute/disks/read · Microsoft.Insights/Metrics/Read |
Where it applies
Three meters behind every Ultra Disk
An Ultra Disk is priced on what you provision, not on what you use. The disk types page explains that capacity, IOPS and throughput are set independently and that each of them determines the cost of the disk. IOPS can go up to 1,000 per GiB and throughput can be adjusted at runtime, up to four times in a 24-hour window.
That flexibility invites over-provisioning. A disk set to 20,000 IOPS for a migration or a benchmark keeps billing for all of them long after the workload has settled at a few hundred.
Listing Ultra Disks with their provisioned performance
az disk list \ --query "[?sku.name=='UltraSSD_LRS'].{name:name, rg:resourceGroup, size:diskSizeGB, iops:diskIOPSReadWrite, mbps:diskMBpsReadWrite, vm:managedBy}" \ -o table
az monitor metrics list --resource <disk-resource-id> \ --metric "Composite Disk Read Operations/sec" "Composite Disk Write Operations/sec" \ --aggregation Maximum --interval PT1H --offset 30dUsage and fit checks for an Ultra Disk
- The disk SKU is
UltraSSD_LRS, and its provisioned IOPS and throughput are both known. - Azure Monitor has both the read and the write series; a missing one means no finding.
- The 30-day peak, read maximum plus write maximum, is below 20% of provisioned IOPS.
- The same peak fits within the IOPS of the Premium SSD tier that matches the disk’s size. A 256 GiB disk maps to P15 at 1,100 IOPS, so a peak above that blocks the recommendation even if it is far below the Ultra figure.
When the swap does not save money
A small Ultra Disk with modest provisioned performance can cost less than the Premium tier for its size. In that case the computed saving is zero or negative and there is no finding. If the region’s price feed lacks the Ultra IOPS or throughput rate, the rule also stays silent rather than pricing only the capacity meter.
Full Ultra cost against the Premium tier
Ultra monthly = capacity cost + provisioned IOPS x IOPS rate per hour x 730 + provisioned MB/s x throughput rate per hour x 730Premium monthly = Premium tier hourly rate for the disk size x 730saving = Ultra monthly - Premium monthlyCounting all three Ultra meters matters: the capacity line alone would make the Ultra Disk look much cheaper than it really is.
Replacing the Ultra Disk with Premium SSD
- Confirm the peak and latency needs in Azure Monitor.
- Snapshot the Ultra Disk.
- Stop and deallocate the VM.
- Create a Premium SSD disk from the snapshot at the same size, attach it in place of the Ultra Disk, and start the VM.
- Watch latency for 24 hours before deleting the old disk and snapshot.