Azure Ultra Disk Optimization: Maximize IOPS and Minimize Latency

Introduction

Enterprises running SAP HANA, SQL Server, and transaction-heavy workloads on Azure frequently hit storage bottlenecks. Not because Ultra Disk isn't capable enough, but because the gap between provisioning it and actually optimizing it is wider than most teams expect. Ultra Disk can deliver sub-millisecond latency and up to 400,000 IOPS — yet most deployments capture only a fraction of that ceiling.

Ultra Disk's performance specs are genuinely impressive. But the engineers who squeeze the most out of it understand that configuration choices (VM selection, queue depth, zone alignment, sector size) determine whether you hit those numbers in production or fall well short of them.

This guide covers the IOPS and throughput mechanics you need to understand, along with six concrete optimization strategies. It also addresses how to use dynamic performance adjustments as a planned operational tool — and how to avoid the over-provisioning trap that makes Ultra Disk expensive without making it faster.


TL;DR

  • Ultra Disk supports up to 400,000 IOPS and 10,000 MB/s throughput per disk, with consistent sub-millisecond latency
  • IOPS, throughput, and capacity are independently configurable — more storage space doesn't automatically mean more IOPS
  • Performance can be adjusted up to 4 times per 24-hour window without detaching the disk or restarting the VM
  • The most common hidden bottleneck is the VM itself: if its uncached IOPS ceiling sits below the disk's provisioned IOPS, you're throttled regardless of disk config
  • Over-provisioning adds up fast — right-sizing disk capacity, IOPS, and throughput independently is the only way to avoid unnecessary spend

What Makes Azure Ultra Disk Different from Other Azure Disk Types

Azure offers five managed disk types: Standard HDD, Standard SSD, Premium SSD, Premium SSD v2, and Ultra Disk. Ultra Disk sits at the top — the only option engineered specifically for sub-millisecond latency and extreme I/O workloads.

One important constraint upfront: **Ultra Disk can only be used as a data disk**. It cannot serve as an OS disk, and it's created as an empty disk. Microsoft recommends pairing it with Premium SSD for the OS disk.

The Core Differentiator: Independent Configuration

That OS disk limitation aside, Ultra Disk's real advantage is performance flexibility. With Premium SSD, performance is locked to the disk's size tier — capacity and throughput move together. Ultra Disk decouples them entirely. You set capacity, IOPS, and throughput as three separate values, paying for exactly what your workload requires.

The performance ceiling difference is substantial:

Disk Type Max IOPS Max Throughput
Premium SSD v2 80,000 2,000 MB/s
Ultra Disk 400,000 10,000 MB/s

When Ultra Disk Is the Right Choice

Ultra Disk is the appropriate choice for workloads where latency directly affects business outcomes:

  • SAP HANA and top-tier Oracle/SQL Server deployments
  • Transaction-heavy financial applications
  • High-performance AI/ML data pipelines
  • Any workload where milliseconds of storage latency have operational consequences

Understanding Ultra Disk Performance: The Numbers That Actually Matter

IOPS Scaling by Disk Size

Ultra Disk provisions at 1,000 IOPS per GiB, with a minimum of 100 IOPS and a hard ceiling of 400,000 IOPS per disk. IOPS can be set independently within the supported range for your disk size.

Ultra Disk Size Max IOPS Max Throughput
4 GiB 4,000 1,000 MB/s
8 GiB 8,000 2,000 MB/s
16 GiB 16,000 4,000 MB/s
32 GiB 32,000 8,000 MB/s
64 GiB 64,000 10,000 MB/s
128 GiB 128,000 10,000 MB/s
256 GiB 256,000 10,000 MB/s
512 GiB–65,536 GiB 400,000 10,000 MB/s

Azure Ultra Disk IOPS and throughput scaling by disk size comparison chart

A 64 GiB disk caps at 64,000 IOPS. To reach the 400,000 IOPS ceiling, you need at least 512 GiB of provisioned capacity.

Throughput Formula

Maximum throughput = 0.25 MB/s per provisioned IOPS, up to 10,000 MB/s. Minimum guaranteed throughput is 1 MB/s.

In practice: 5,000 provisioned IOPS yields a max throughput of 1,250 MB/s. To hit the 10,000 MB/s ceiling, you need at least 40,000 provisioned IOPS.

Latency: Average vs. Tail

Ultra Disk is designed for consistent sub-millisecond latency. Microsoft's 2025 platform enhancements delivered an 80% reduction in P99.9 and outlier latency, plus a 30% improvement in average latency.

For transaction-heavy workloads, tail latency matters as much as average latency. One slow I/O operation can stall downstream processes entirely, making P99.9 the number to watch.

VM Reservation Fee

When you enable Ultra Disk compatibility on a VM without attaching an Ultra Disk, Azure charges a per-vCPU reservation fee ($0.006/hour per vCPU provisioned). Teams often forget to disable compatibility after removing a disk — check the Azure Managed Disks pricing page for current regional rates.

Performance Change Timing

Ultra Disk allows up to 4 performance changes per 24-hour window, and each change can take up to 1 hour to take effect. This is not a real-time control — plan changes ahead of anticipated peak events, not in response to them.


6 Strategies to Maximize Azure Ultra Disk IOPS and Minimize Latency

1. Align Disk Size to Your IOPS Requirements, Not Just Capacity

The most common mistake: sizing Ultra Disk based on how much data needs to be stored rather than how many IOPS the workload demands.

Since IOPS scales with size (1,000 IOPS/GiB up to the 400K cap), the minimum disk size to support a target IOPS level is straightforward:

Minimum GiB = Target IOPS ÷ 1,000

A workload requiring 80,000 IOPS needs at least an 80 GiB disk. Because IOPS can be set independently within the supported range, you can provision a larger disk for headroom while keeping IOPS lower initially. Just don't size down and expect to configure IOPS above what the disk size supports.

2. Eliminate the VM-Level IOPS Bottleneck First

This is the most frequently overlooked issue. Ultra Disk does not support host caching, so the VM's uncached disk IOPS limit is the only relevant ceiling. If it sits below your disk's provisioned IOPS, the VM becomes the bottleneck regardless of disk configuration.

Check a VM's uncached IOPS capability with PowerShell:

Get-AzVMSize -Location <region> | Where-Object {$_.Name -eq "<VMSize>"}

For Ultra Disk workloads requiring very high uncached throughput, the Mbdsv3 series supports up to 650,000 remote IOPS and 10,000 MBps remote throughput. Verify specific SKU limits on the Azure VM sizes documentation before provisioning.

3. Use Availability Zone Alignment to Reduce Latency

Ultra Disk must be deployed in an availability zone, and the VM and disk must be in the same zone. Mismatched zones introduce cross-zone latency that directly undercuts the sub-millisecond advantage you're paying for.

Before deployment, verify zone availability:

az vm list-skus --location <region> --resource-type virtualMachines \
  --query "[?name=='<VMSize>'].locationInfo[0].zones"

Note that Ultra Disk availability zone support varies by region. Always confirm availability before deployment.

4. Optimize I/O Queue Depth for Your Workload Type

Queue depth has a direct relationship with IOPS, throughput, and latency:

Queue Depth Effect Best For
1–4 Lowest per-operation latency OLTP, transaction logs
8–16 Balanced IOPS/latency Mixed workloads
32+ Maximum throughput/IOPS Batch processing, sequential reads

I/O queue depth settings versus IOPS latency and throughput tradeoffs comparison infographic

On Linux, configure queue depth via udev rules or measure with fio. On Windows, use diskspd to benchmark different queue depths against your actual workload pattern. Measure against your actual pattern; don't assume defaults are optimal.

5. Choose the Right Sector Size Before Creation

Ultra Disk defaults to 4K physical sector size, which most modern applications support natively. The exception: Oracle Database versions prior to 12.2 require 512E (512-byte emulation).

Using the wrong sector size causes subtle performance degradation or application errors that are difficult to diagnose after deployment. Specify sector size during disk creation via Portal or CLI. Note that sector size cannot be changed after the disk is created. There's no workaround; you'd need to create a new disk.

6. Understand the Write Accelerator Limitation on M-Series VMs

Write Accelerator and Ultra Disk are frequently discussed together for M-series VMs running SAP HANA or SQL Server. They are not compatible. Ultra Disk does not support Write Accelerator.

The correct pairing for M-series log workloads:

  • OS disk: Premium SSD with Write Accelerator enabled
  • Data and log disks: Ultra Disk (for extreme IOPS and throughput)

Write Accelerator is a per-disk setting on M-series VMs only, applied to Premium SSD disks. Keep this separation clear when designing storage layouts for SAP HANA or SQL Server on M-series.


Dynamic Performance Tuning: Using Your 4 Daily Adjustments Strategically

Most teams treat dynamic performance adjustment as an emergency tool — something to reach for when a workload is already struggling. A more effective approach treats the 4 daily changes as a scheduled operational lever built into normal capacity planning.

A Practical Scheduling Strategy

  1. Set IOPS and throughput to what normal operations require (your baseline)
  2. Schedule a performance increase before known high-demand windows — month-end batch jobs, market open/close, database maintenance
  3. Reduce provisioning back to baseline after the window closes. Most teams skip this step, and that's where unnecessary cost accumulates

How to Trigger a Performance Change

No disk detachment or VM restart required. Use any of:

# Azure CLI
az disk update --resource-group <rg> --name <disk> \
  --disk-iops-read-write 50000 --disk-mbps-read-write 1000
# PowerShell
$diskUpdateConfig = New-AzDiskUpdateConfig -DiskIOPSReadWrite 50000 -DiskMBpsReadWrite 1000
Update-AzDisk -ResourceGroupName <rg> -DiskName <disk> -DiskUpdate $diskUpdateConfig

Azure Ultra Disk dynamic performance adjustment 4-step scheduling workflow infographic

Each request counts toward the 4-per-24-hour limit, so plan deliberately. Speculative adjustments you later need to reverse consume quota you can't recover until the 24-hour window resets. The financial reporting example below shows how to map this to a predictable cost model.

Financial Reporting Example

A financial reporting application needs high IOPS only on the last business day of each month:

Period Provisioned IOPS Provisioned Throughput
Normal operations (29 days) 5,000 IOPS 500 MB/s
Month-end peak (1 day) 40,000 IOPS 2,000 MB/s

The cost difference between running at 40,000 IOPS continuously versus 5,000 IOPS for 29 days and 40,000 for 1 day is substantial. Microsoft's flexible provisioning model enables teams to capture that delta — but only if the scale-down actually happens.


Avoiding the Ultra Disk Cost Trap Through Right-Sizing

Unlike Premium SSD — where you pay a flat rate per disk size tier — Ultra Disk charges separately for three dimensions:

  • Capacity: per GiB provisioned (in 1 GiB increments)
  • IOPS: per provisioned IOPS above the 100 IOPS baseline
  • Throughput: per MB/s above the 1 MB/s minimum

Teams that set IOPS and throughput "just in case" and never adjust them pay for performance that sits idle. Microsoft's own analysis shows right-sizing can reduce Ultra Disk spend by up to 22%, with the flexible provisioning model delivering savings of up to 50% on small disks and 25% on large disks.

Ultra Disk right-sizing cost savings potential comparison between over-provisioned and optimized configurations

Where Costs Hide

Three specific areas warrant an audit:

  • VMs with Ultra Disk compatibility enabled but no disk attached incur a $0.006/hour per-vCPU charge — and Azure Disk Storage reservations don't apply to offset it. At scale, this adds up fast.
  • Ramping IOPS for a batch job or maintenance window and forgetting to scale back down means paying 8x normal rates the following month — and every month after.
  • Setting IOPS to the disk's size ceiling when actual workload demand is a fraction of that level silently inflates costs with no performance benefit.

Continuous Right-Sizing vs. One-Time Audits

Each of these patterns shares a common root: configurations set at one point in time don't stay accurate as workloads shift. Manual audits catch over-provisioning when someone remembers to look. Peaks come and go in the meantime, and IOPS settings drift well out of alignment with actual demand.

Lucidity's Lumen continuously scores every Azure disk's tier against real usage — tracking IOPS, throughput, latency, and cost — and flags configuration changes when the setup no longer fits the workload. Right-sizing becomes an ongoing process, not a quarterly reminder.


Frequently Asked Questions

What are the maximum IOPS and typical latency for Azure Ultra Disk?

Ultra Disk supports up to 400,000 IOPS per disk (at 1,000 IOPS/GiB) and a maximum throughput of 10,000 MB/s. It's designed for consistent sub-millisecond latency, with recent platform enhancements delivering an 80% reduction in P99.9 latency.

What is acceptable latency for Azure Virtual Desktop (AVD)?

AVD profile storage latency should stay in single-digit milliseconds for a good user experience. Ultra Disk isn't typically used for AVD FSLogix profiles: Azure Files Premium (~3ms) or Azure NetApp Files (~1ms) are the standard recommendations. Ultra Disk may be relevant for backend databases powering AVD workloads.

Can Azure Ultra Disk be used as an OS disk?

No. Ultra Disk is only supported as a data disk and is created as an empty disk. Microsoft recommends using Premium SSD for the OS disk when attaching Ultra Disk as a data disk.

How many times can I adjust Azure Ultra Disk performance per day?

Performance can be adjusted up to 4 times within a 24-hour window without restarting the VM or detaching the disk. Each change can take up to an hour to take effect, so plan adjustments ahead of anticipated peaks.

Which Azure VM series are compatible with Ultra Disk?

Confirmed compatible series include FSv2, LSv2/Lsv3/Lasv3, NCv3, NCasT4_v3, ND, NDv2, NVv3/v4, NVadsA10 v5, HC, and HBv2, among others. Compatibility varies by region. Always verify availability using CLI or PowerShell before deployment, as not every VM size supports Ultra Disk in every region.

How does Azure Ultra Disk pricing differ from Premium SSD?

Premium SSD bills by a fixed disk size tier. Ultra Disk charges separately for capacity (per GiB at 1 GiB granularity), provisioned IOPS above the 100 IOPS baseline, and provisioned throughput above 1 MB/s. This three-part billing structure makes right-sizing essential: every unit of over-provisioned IOPS or throughput is a direct cost with no performance benefit.