Logical Disk - Average Disk Seconds Per Read

Microsoft.Windows.Client.Win10.LogicalDisk.AvgDiskSecPerRead (UnitMonitor)

Monitor the performance counter LogicalDisk\Avg Disk Sec Per Read

Knowledge Base article:

Summary

The Avg. Disk sec/Read (LogicalDisk\Avg. Disk sec/Read) for the logical disk has exceeded the threshold. The logical disk and possibly even overall system performance may significantly diminish which will result in poor operating system and application performance.

The Avg. Disk sec/Read counter measures the average rate of disk read requests (I/O request packets (IRPs)) that are executed per second on a specific logical disk. This is one measure of storage subsystem throughput.

Causes

A high Avg. Disk sec/Read performance counter value may occur due to a burst of disk read requests by either an operating system or application.

Resolutions

To view recent history for the Logical Disk\Avg. Disk sec/Read performance counter you can use the following view:

Start Logical Disk\Avg. Disk Sec/Reads Performance View

To increase the available storage subsystem throughput for the logical disk, do one or more of the following:

Be sure to set this threshold value appropriately for your specific storage hardware. The threshold value will vary according to the disk’s underlying storage subsystem. For example, the “disk” might be a single spindle or a large disk array.

Additional

The Avg. Disk sec/Read counter is useful in gathering throughput data. If the average time is long enough, you can analyze a histogram of the array’s response to specific loads (queues, request sizes, and so on). If possible, you should observe workloads separately.

You can use throughput metrics to determine:

However, without thorough knowledge of the underlying storage subsystem of the logical disk (for example, knowing whether it is a single spindle or a massive disk array), it can be difficult to provide an optimized one size fits all threshold value.

You must also consider the Avg. Disk sec/Read counter in conjunction with other read request characteristics (for example, request size and randomness/sequentially) and the equivalent counters for read disk requests.

If the Avg. Disk sec/Read counter is tracked over time and if it increases with the intensity of the workloads that are driving the read requests, it is reasonable to suspect that the logical disk is saturated if throughput does not increase and overall system throughput starts to degrade.

For more information about storage architecture and driver support, see the Storage - Architecture and Driver Support Web site at http://go.microsoft.com/fwlink/?LinkId=26156.

Element properties:

TargetMicrosoft.Windows.Client.Win10.LogicalDisk
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Instance NameLogicalDisk
Counter NameAvg. Disk sec/Read
Frequency60
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.AverageThreshold
RemotableTrue
AccessibilityPublic
Alert Message
Disk read latency is too high
The threshold for the Logical Disk\Avg. Disk sec/Read performance counter has been exceeded. The value that exceeded the threshold is: {0}.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Client.Win10.LogicalDisk.AvgDiskSecPerRead" Accessibility="Public" Enabled="true" Target="Win10!Microsoft.Windows.Client.Win10.LogicalDisk" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.AverageThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Client.Win10.LogicalDisk.AvgDiskSecPerRead.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Value$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Error"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>Avg. Disk sec/Read</CounterName>
<ObjectName>LogicalDisk</ObjectName>
<InstanceName>$Target/Property[Type="Windows!Microsoft.Windows.LogicalDevice"]/DeviceID$</InstanceName>
<Frequency>60</Frequency>
<Threshold>50</Threshold>
<NumSamples>5</NumSamples>
</Configuration>
</UnitMonitor>