Windows recently told me it had found a bad block on my disk drive. I ran a disk check and told it to fix bad blocks. Presumably, the bad block had been spared out. However, my computer's performance was awful. I tried the usual dance -- clean up, defrag, ensure the page file was contiguous in a good spot -- but performance was still awful.
CPU usage was running at a background level of 10-20%. Process Explorer attributed this CPU to "Hardware Interrupts". A bit of Googling led me to this blog entry:
Little-Known Tweak to Boost Hard Drive Performance!
In short, after Windows has noted six I/O errors on a controller, it pins that controller to programmed I/O mode (PIO). You can check this by looking at the properties of the disk controller in the Device Manager. The only way to re-enable DMA mode is to perform some registry hacks under the key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}
Find the sub-key associated with the controller in question (e.g. the primary IDE channel). Then:
- delete
MasterIdDataCheckSum
(if present) - delete
SlavedIdDataCheckSum
(if present) - add
ResetErrorCountersOnSuccess
(DWORD) = 1 (if desired) - set any or all of the following capability masks to 0xFFFFFFFF (if
present):
MasterDeviceTimingMode
MasterDeviceTimingModeAllowed
SlaveDeviceTimingMode
SlaveDeviceTimingModeAllowed
UserMasterDeviceTimingModeAllowed
UserSlaveDeviceTimingModeAllowed
- reboot
After rebooting, check to see whether the relevant controller has reverted to DMA mode. If so, your problem is probably solved (unless the hardware is truly gacked).