Why disk performance sometimes slows in Windows

Windows users are reporting that after a number of suspend/resume cycles, their disk performance may slow. This is because the IDE controller's transfer mode is reset by default to a slower mode. Here is the workaround.

Some Windows users have noticed that, after suspending and resuming their computer several times without rebooting,

disk performance becomes unusually poor. This happens when the computer's disk controller is listed as an IDE controller in the Device Manager. After a number of suspend/resume cycles, the IDE controller's transfer mode may be reset to a slower mode. This typically starts with the IDE controller falling back to a slower direct memory access (DMA) mode, then eventually to the slowest mode of all, programmed I/O (PIO).

(Note: This usually leads to a good deal of grousing from users about why Windows always runs faster when they first boot it.)

Why does this happen? As it turns out, this behavior has been deliberately programmed into the ATAPI.SYS disk driver in Windows. This driver handles all generic IDE disk functions, including hard drives and CD/DVD drives, and also keeps running counts of any problems that arise with a given drive. If a drive times out (i.e., doesn't respond to commands) or returns a data error more than six times before a reboot, ATAPI.SYS reduces the speed of the device to prevent further errors. This causes the slowdown, and disk performance won't return to normal until the system is rebooted.

XP Service Pack 2 included a fix for this problem, and a hotfix for Windows Server 2003 also addresses it (which is only available for Microsoft Product Support Services; refer to Knowledge Base article 817472). However, the fix isn't enabled by default. To enable it:

  • Open the Registry and navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\.
  • Look under this key for a set of subkeys named 0001, 0002 and so on. There will be as many such entries as there are for each separate IDE controller in the system.
  • Within each of these numbered subkeys, add a new DWORD value named ResetErrorCountersOnSuccess and set it to 1.
  • Reboot the computer.

This should cause the computer to reset the error counter for a given device without needing a reboot, and keep it from dropping back to a lower speed unless it's really required.

Note: This behavior usually doesn't manifest after hibernating and resuming (as opposed to suspending and resuming), since hibernating involves powering off the system entirely and thereby resets the driver's error counters. Also, just to reiterate, this problem occurs only when the disk controller is listed as an IDE controller in the Device Manager. If your disks are controlled through something like a SATA RAID device, you won't be subject to this problem.

About the author: Serdar Yegulalp is editor of the Windows Power Users Newsletter, which is devoted to hints, tips, tricks, news and goodies for Windows NT, Windows 2000 and Windows XP users and administrators. He has more than 10 years of Windows experience under his belt, and contributes regularly to SearchWinSystems.com and SearchSQLServer.com.

More information from SearchWinSystems.com


This was first published in June 2006

Dig deeper on Microsoft Active Directory Tools and Troubleshooting

Pro+

Features

Enjoy the benefits of Pro+ membership, learn more and join.

0 comments

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

SearchServerVirtualization

SearchCloudComputing

SearchExchange

SearchSQLServer

SearchWinIT

SearchEnterpriseDesktop

SearchVirtualDesktop

Close