Current Disk Queue Length (Logical Disk)

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

Monitor the performance counter LogicalDisk\Current Disk Queue Length

Knowledge Base article:

Summary

The logical 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 logical 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 logical disk is not able to honor I/O requests as fast as they are being made.

Causes

Either the logical disk has recently experienced a significant increase in activity, and this spike has resulted in exceeding the threshold, or logical 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 logical 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.LogicalDisk
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Instance NameLogicalDisk
Counter NameCurrent Disk Queue Length
Frequency300
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableTrue
AccessibilityPublic
Alert Message
Logical disk current queue length is too high
The threshold for the Logical Disk\Current Disk Queue Length performance counter has been exceeded.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.10.0.LogicalDisk.CurrentDiskQueueLength" Accessibility="Public" Enabled="true" Target="ServervNext!Microsoft.Windows.Server.10.0.LogicalDisk" 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.LogicalDisk.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>LogicalDisk</ObjectName>
<InstanceName>$Target/Property[Type="Windows!Microsoft.Windows.LogicalDevice"]/DeviceID$</InstanceName>
<Frequency>300</Frequency>
<Threshold>32</Threshold>
<Direction>greaterequal</Direction>
<NumSamples>12</NumSamples>
</Configuration>
</UnitMonitor>