Small Premium SSD disks under 500 provisioned IOPS that barely use them
What does ZopNight detect here?
ZopNight flags a small `Premium_LRS` disk, provisioned below the 500 IOPS of a P10, when its combined read and write peak over 30 days stays below 20% of what it provides. The disk is proposed for Standard SSD at the same size, priced from the real Premium and Standard SSD tier rates.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-240 |
| Category | rightsizing |
| Severity | medium |
| Metric | Composite Disk Read/Write Operations/sec (30-day peak) |
| Threshold | provisioned IOPS < 500 and peak < 20% of it |
| Evaluation window | 30d |
| Source | ZopNight |
| Permissions used | Microsoft.Compute/disks/read · Microsoft.Insights/Metrics/Read |
Where it applies
Why the smallest Premium tiers are easy to replace
The disk types page lists Premium SSD sizes from 4 GiB to 32 GiB (P1 to P4) at 120 base IOPS and P6 at 64 GiB with 240, while P10 at 128 GiB gets 500. Standard SSD offers up to 500 IOPS across the same sizes. So for a small disk, Premium’s advantage is mainly lower, more consistent latency, not more operations per second.
These disks appear in large numbers: small OS disks, agent volumes and scratch disks built from templates that default to Premium. When the metrics show a disk using a sliver of even its 120 or 240 IOPS, the Premium price is doing very little.
Spotting small Premium disks with low usage
az disk list \ --query "[?sku.name=='Premium_LRS' && diskIOPSReadWrite < \`500\`].{name:name, rg:resourceGroup, size:diskSizeGB, tier:tier, iops:diskIOPSReadWrite}" \ -o tableFor each candidate, pull a month of per-hour maxima and add read to write:
az monitor metrics list --resource <disk-resource-id> \ --metric "Composite Disk Read Operations/sec" "Composite Disk Write Operations/sec" \ --aggregation Maximum --interval PT1H --offset 30dTests a small Premium disk has to pass
- SKU
Premium_LRS, with provisioned IOPS known and below 500. - The disk is not positively identified as non-production. Those disks are handled by Azure Non-Prod Premium Disk Downgrade, so this rule covers production disks and disks with no environment signal.
- The name does not suggest a database role, such as datadisk, logdisk, tempdb, sql, oracle or hana.
- Both the read and the write series exist in Azure Monitor, and their summed 30-day peak is below 20% of provisioned IOPS.
- The disk has a monthly cost and both tier rates for its size are known.
Where the rule refuses to guess
Any missing input means no finding: an absent metric is a data gap, not proof of idleness, and an absent or inverted rate means the saving cannot be priced. A result that would equal or exceed the disk’s whole cost is also discarded as a sign of a bad rate. Larger Premium disks, at 500 IOPS and up, are evaluated by Azure Premium Disk IOPS Downgrade instead.
Premium to Standard SSD rate difference
monthly saving = disk monthly cost x (1 - Standard SSD tier rate / Premium tier rate)Both rates are for the tier that matches the disk’s size in its region, so a 64 GiB disk is compared P6 against E6.
Switching the disk to Standard SSD
- Confirm the observed peak in Azure Monitor and check any latency requirement with the owner.
- Snapshot the disk.
- Deallocate the VM, since Microsoft’s disk conversion steps require it.
- Run
az disk update --resource-group my-rg --name my-disk --sku StandardSSD_LRS. - Start the VM and watch latency for 24 hours.