Current Disk Queue Length (Physical Disk)

Microsoft.Windows.Server.10.0.PhysicalDisk.CurrentDiskQueueLength (UnitMonitor)

Monitor the performance counter PhysicalDisk\Current Disk Queue Length

Knowledge Base article:

Summary

The physical disk has had a consistently high value for the “Current Queue Length” counter over multiple consecutive samples. As a result, I/O requests latency will most likely increase on this physical disk.

Current Disk Queue Length is the number of requests outstanding on the disk at the time the performance data is collected. This means that the physical disk is not able to honor I/O requests as fast as they are being made.

Causes

Either the physical disk has recently experienced a significant increase in activity, and this spike has resulted in exceeding the threshold, or physical disk’s utilization has been steadily increasing over time and has finally reached a point of going over the threshold.

The other possibility is that some portion of the underlying physical disks or the disk subsystem is malfunctioning or misconfigured, impairing the performance of the physical disk.

Resolutions

To further investigate the issue consider the following:

Based on the findings from further investigation, resolutions may vary and could include one of the following:

Element properties:

TargetMicrosoft.Windows.Server.10.0.PhysicalDisk
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Instance NamePhysicalDisk
Counter NameCurrent Disk Queue Length
Frequency300
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableTrue
AccessibilityPublic
Alert Message
Physical disk current queue length is too high
The threshold for the Physical Disk\Current Disk Queue Length performance counter has been exceeded.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.10.0.PhysicalDisk.CurrentDiskQueueLength" Accessibility="Public" Enabled="true" Target="ServervNext!Microsoft.Windows.Server.10.0.PhysicalDisk" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Server.10.0.PhysicalDisk.CurrentDiskQueueLength.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters/>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="ConditionTrue" HealthState="Warning"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="ConditionFalse" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>Current Disk Queue Length</CounterName>
<ObjectName>PhysicalDisk</ObjectName>
<InstanceName>$Target/Property[Type="WindowsServer!Microsoft.Windows.Server.PhysicalDisk"]/PerfmonInstance$</InstanceName>
<Frequency>300</Frequency>
<Threshold>32</Threshold>
<Direction>greaterequal</Direction>
<NumSamples>12</NumSamples>
</Configuration>
</UnitMonitor>