Performance history for virtual hard disks
This sub-topic of Performance history for Storage Spaces Direct describes in detail the performance history collected for virtual hard disk (VHD) files. Performance history is available for every VHD attached to a running, clustered virtual machine. Performance history is available for both VHD and VHDX formats, however it is not available for Shared VHDX files.
Note
It may take several minutes for collection to begin for newly created or moved VHD files.
Series names and units
These series are collected for every eligible virtual hard disk:
Series | Unit |
---|---|
vhd.iops.read |
per second |
vhd.iops.write |
per second |
vhd.iops.total |
per second |
vhd.throughput.read |
bytes per second |
vhd.throughput.write |
bytes per second |
vhd.throughput.total |
bytes per second |
vhd.latency.average |
seconds |
vhd.size.current |
bytes |
vhd.size.maximum |
bytes |
How to interpret
Series | How to interpret |
---|---|
vhd.iops.read |
Number of read operations per second completed by the virtual hard disk. |
vhd.iops.write |
Number of write operations per second completed by the virtual hard disk. |
vhd.iops.total |
Total number of read or write operations per second completed by the virtual hard disk. |
vhd.throughput.read |
Quantity of data read from the virtual hard disk per second. |
vhd.throughput.write |
Quantity of data written to the virtual hard disk per second. |
vhd.throughput.total |
Total quantity of data read from or written to the virtual hard disk per second. |
vhd.latency.average |
Average latency of all operations to or from the virtual hard disk. |
vhd.size.current |
The current file size of the virtual hard disk, if dynamically expanding. If fixed, the series is not collected. |
vhd.size.maximum |
The maximum size of the virtual hard disk, if dynamically expanding. If fixed, the is the size. |
Where they come from
The iops.*
, throughput.*
, and latency.*
series are collected from the Hyper-V Virtual Storage Device
performance counter set on the server where the virtual machine is running, one instance per VHD or VHDX.
Series | Source counter |
---|---|
vhd.iops.read |
Read Operations/Sec |
vhd.iops.write |
Write Operations/Sec |
vhd.iops.total |
sum of the above |
vhd.throughput.read |
Read Bytes/sec |
vhd.throughput.write |
Write Bytes/sec |
vhd.throughput.total |
sum of the above |
vhd.latency.average |
Latency |
Note
Counters are measured over the entire interval, not sampled. For example, if the VHD is inactive for 9 seconds but completes 30 IOs in the 10th second, its vhd.iops.total
will be recorded as 3 IOs per second on average during this 10-second interval. This ensures its performance history captures all activity and is robust to noise.
Usage in PowerShell
Use the Get-VHD cmdlet:
Get-VHD <Path> | Get-ClusterPerf
To get the path of every VHD from the virtual machine:
(Get-VM <Name>).HardDrives | Select Path
Note
The Get-VHD cmdlet requires a file path to be provided. It does not support enumeration.