# Azure Small Premium Disk Tier Optimization

> 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.

Source: https://zop.dev/integrations/azure/recommendations/azure-small-premium-disk-tier-optimization
Updated: 2026-08-19

---

## 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

```bash
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.
