Skip to main content
rightsizing · azure

Small Premium SSD disks idle enough for Standard SSD

resource types
1
rule IDs covered
1
severity
medium

What does ZopNight detect here?

Premium_LRS disks provisioned under 500 IOPS whose 30-day observed peak stays below 20% of provisioned capacity get a cross-family downgrade recommendation to StandardSSD_LRS at the same size. ZopNight prices the exact per-size tier-rate delta and abstains when either rate is missing or the disk is positively non-production.

Signal and threshold

How ZopNight evaluates Small Premium SSD disks idle enough for Standard SSD.
Field Value
Rule IDsRC-240
Categoryrightsizing
Severitymedium
Metricnone — pure configuration read
Sourcedisk_tier_optimization.go

The population two sibling rules leave behind

Azure Premium disk downgrades in ZopNight are split three ways, and this rule owns the awkward middle. One sibling (RC-1386) downgrades Premium disks on size and environment alone, but only when the disk is positively identified as non-production. Another (RC-1394) is metric-driven and covers production, but only steps down within the Premium family and hard-floors at 500 provisioned IOPS: below the P10 tier there is no smaller Premium tier worth stepping to. A small P4 or P6 disk in a production or environment-unknown subscription therefore gets nothing from either. RC-240 covers exactly that slice: Premium_LRS, under 500 provisioned IOPS, where the only worthwhile move is a cross-family switch to Standard SSD at the same size.

Every gate fails closed

Because this rule cannot lean on “it’s only dev” for safety, it demands measured evidence. The SKU must be literally Premium_LRS, not Premium_ZRS or PremiumV2, for which the savings math and target would be wrong. The disk must not be positively non-production (that fleet belongs to the sibling). The disk name must carry no database role: SQL, Oracle, or HANA data, log, and tempdb volumes drive an I/O SLA even when a sampling window catches them idle, so they are excluded outright. Provisioned IOPS from discoverer metadata must exist and sit under 500. And both 30-day Azure Monitor series (DiskDataReadOps and DiskDataWriteOps, read under Monitoring Reader) must be present, with the observed peak below 20% of provisioned IOPS. The peak is computed as the sum of each series’ maximum, which overstates the true peak and biases against flagging. A missing series is treated as a data gap, never as idleness.

Priced from the catalog or not at all

Savings come from the real per-size tier rates: cost × (1 − StandardSSD rate ÷ Premium rate), with both the P-tier and E-tier catalog rows fetched by exact key. If either rate is absent, or the target rate is not actually cheaper, the rule abstains. There is no flat-percentage fallback. An earlier version invented a flat 20% saving off tags no producer wrote; the current contract replaced that entirely.

Confirm a candidate from the CLI

Terminal window
az disk show -n <disk> -g <rg> \
--query "{sku:sku.name, sizeGb:diskSizeGB, provisionedIops:diskIopsReadWrite}"

Executing the downgrade

Snapshot first, deallocate the attached VM, change the SKU to StandardSSD_LRS at the same size, then watch latency and queue depth for a day. Standard SSD trades lower IOPS ceilings and higher latency for the price cut. That is precisely why the rule insists the workload demonstrably never used the Premium headroom before suggesting the trade.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

417 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

417 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·