IOPS limits visible in third-party reports (RVTools) but missing in vSphere 8.0 Client GUI
search cancel

IOPS limits visible in third-party reports (RVTools) but missing in vSphere 8.0 Client GUI

book

Article ID: 414103

calendar_today

Updated On:

Products

VMware vCenter Server 8.0 VMware vSphere ESXi 8.0

Issue/Introduction

  • Third-party reporting tools (e.g., RVTools > vdisk >limit) show specific IOPS limits (e.g., 140, 280) assigned to Virtual Machine hard disks.
  • The "Limit - IOPs" and "Shares" fields are missing from the VM Edit Settings > Virtual Hardware and Resources tabs in the vSphere 8.0 Client.
  • vSAN performance may be throttled despite no visible limits in the vCenter UI.
  • vSphere 7.0U3 example:

  • vSphere 8.0U3 example:

Environment

vSphere 8.0.x

Cause

 Starting with vSphere 8.0, the per-disk IOPS limit configuration was removed from the vSphere Client GUI. Enforcement was moved to the mClock scheduler, which manages IOPS, Reservations, and Shares at the protocol stack layer. Legacy IOPS limits set in previous vSphere versions (6.x/7.x) remain in the VM metadata and are enforced by mClock, but they cannot be viewed or modified via the vSphere 8.x UI.

Resolution

Use VM Storage Policy.
Create a VM Storage Policy for Host-Based Data Services

If you enable host-based rules in “2. Policy structure”, you can configure IOPS limits and IOPS shares in the Storage I/O Control tab in “3. Host-based services”. 

In addition to custom configuration, you can also specify the storage policy component here.

------------------------------------------

To verify and remove these legacy limits, use PowerCLI or the ESXi command line.

1. Verify existing limits via PowerCLI: Run the following command to identify disks with active IOPS limits:

Get-VM "VM_NAME" | Get-HardDisk | Select Parent, Name, @{N="IOPSLimit";E={$_.ExtensionData.StorageIOAllocation.Limit}}

2. Remove legacy limits (Set to Unlimited): To clear these limits and allow mClock to operate without legacy throttling, set the limit value to -1

$vm = Get-VM "VM_NAME"
$disks = $vm | Get-HardDisk
foreach ($disk in $disks) {
    $spec = New-Object VMware.Vim.VirtualMachineConfigSpec
    $dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
    $dev.Operation = "edit"
    $dev.Device = $disk.ExtensionData
    $dev.Device.StorageIOAllocation.Limit = -1
    $spec.DeviceChange += $dev
    $vm.ExtensionData.ReconfigVM($spec)
}

 

3. Manage future limits via Storage Policies: In vSphere 8.x, all IOPS limits should be managed via VM Storage Policies:

  1. Navigate to Policies and Profiles > VM Storage Policies.
  2. Edit or Create a policy and enable Host-based services.
  3. Under the Storage I/O Control tab, define the IOPS limit.

Additional Information