Hi All,

If you’ve ever supported a SQL server that has been experiencing IO delays you’ll know that SQL will write a warning in the Event Log if an IO delay of 15 seconds or longer has occurred.  In the past I’ve found that this can be a great indicator of an issue with the underlying storage used by the server, be that local disks or even a SAN.

Unfortunately though, if you don’t have a SQL server it can be hard to spot IO delays on a server without lots of perfmon or 3rd party tools, say a server acting as a File Server…

This is where the registry value TimeOutValue under the key HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Disk can help identify delays. The value TimeOutValue is the duration that Windows will wait for a hard disk to respond to a command, if the value is exceeded the command will time out and an event will be written to the Event Log with an event ID of 9 (AFAIK).

By default within Windows Server 2003 – 2008R2 this is set to a default value of 60 (seconds). This default value though is too high to often pick up IO delays and therefore the TimeOutValue should be set to 10 (decimal) and the server should be rebooted. Now you can keep an eye out for Event ID 9 showing up in the Event Log which will likely indicate IO issues and it’s time to get thinking about RAID levels, cache settings and disk IOPs.

Hope you find this useful!

n3ilb