Disk Write Latency

Microsoft.SQLServer.2008.Database.DiskWriteLatencyMonitor (UnitMonitor)

Disk Write Latency monitor for 2008 DBs

Knowledge Base article:

Summary

The monitor checks latency for the disk write operation and throws an alert.

This alert indicates that the average time that it takes to write on the disk has stayed greater than threshold during an interval.

Causes

The problem may be caused by low performance of the Microsoft SQL Server or by a disk bottleneck.

Resolutions

To resolve this error, do one or more of the following:

SQL Server Best Practices Article (Disk Configuration Best Practices & Common Pitfalls)

http://go.microsoft.com/fwlink/?LinkId=789161

Overrideable Parameters

Name

Description

Default Value

Alert Priority

Defines Alert Priority.

Normal

Alert Severity

Defines Alert Severity.

Error

Enabled

Enables or disables the workflow.

No

Generates Alerts

Defines whether the workflow generates an Alert.

Yes

Interval (seconds)

The recurring interval of time in seconds in which to run the workflow.

300

Number of samples

If the parameter threshold exceeding count is greater or equal to the number of samples, then the monitor will be in a bad state

6

Synchronization Time

The synchronization time specified by using a 24-hour format. May be omitted.

00:08

Threshold

Threshold

25

Timeout (seconds)

Specifies the time the workflow is allowed to run before being closed and marked as failed.

200

Element properties:

TargetMicrosoft.SQLServer.2008.Database
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.Database.DiskWriteLatency.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
SQL DB 2008 disk write latency is too high
The database "{0}" in SQL instance "{1}" on computer "{2}" mount point "{3}" has too high disk write latency "{4}". See "alert context" tab for more details.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.Database.DiskWriteLatencyMonitor" Accessibility="Public" Enabled="false" Target="SQL2008Core!Microsoft.SQLServer.2008.Database" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.Database.DiskWriteLatency.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.Database.DiskWriteLatencyMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter3>
<AlertParameter4>$Data/Context/ObjectName$</AlertParameter4>
<AlertParameter5>$Data/Context/Value$</AlertParameter5>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Normal" MonitorTypeStateID="Normal" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>300</IntervalSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<Threshold>25</Threshold>
<NumSamples>6</NumSamples>
<SyncTime/>
</Configuration>
</UnitMonitor>