Little-Known Tweak to Boost Hard Drive Performance!
Note: Be sure to see my follow-up article about the traffic I got for this post from digg.com.
The speed at which your hard drive transfers data is very important, right? Especially if you need to copy a 20-gigabyte file, like I did. My laptop was initially copying the file at 2 MB/s because it was transferring in PIO-only mode, which would have taken almost three hours. Not only is PIO terribly slow, it consumes lots of CPU power. While copying that 20-gigabyte file, my CPU usage stayed at 100%. Therefore, I tried to figure out the best way to increase the transfer rate. I changed the transfer mode to UltraDMA-6, speeding it up by 600% to 12 MB/s, and the 20-gigabyte file copied in a little over 30 minutes. Plus, my CPU usage was only about 20-30%.
So, how did the drive get lowered from UltraDMA to PIO-only mode in the first place? Well, because Windows has a particularly dumb way of handling transfer modes for storage devices. After six cumulative (all-time total) errors while reading or writing a storage device, Windows will automatically lower its transfer mode. Worse, it never goes back up unless you reinstall the device. This is bad if you put in a scratched CD, causing those six-in-a-lifetime errors happen all at once. Even your hard drive will experience an occasional hiccup, so eventually its transfer rate is not safe either.
However, there is a setting to force Windows to only lower the transfer rate after six consecutive (in a row) errors, and then raise it back up when the errors stop. Therefore, you can keep your drives in UltraDMA-6 mode.
If you would like to try changing the transfer mode for your drives, follow the instructions below. Going from PIO-only mode to UltraDMA-6 will show you the most significant performance boost. However, your results may vary. Of course, your drive and motherboard must support UltraDMA-6, or you won't see much of a difference. Be careful while you are doing this; I am not responsible for any mistakes you make. Please back up your registry first in case something goes wrong!
How to Check Current Transfer Mode
- Open Device Manager
- Expand IDE ATA/ATAPI Controllers
- Double click on Primary IDE Controller or Secondary IDE Controller
- Go to the Advanced Settings tab to see the current transfer modes. If you see anything besides UltraDMA-6, and especially if you see PIO Mode, then follow the steps below.
How to Force UltraDMA-6
- Open up the Registry Editor.
- Navigate to the following key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}.
- There are several sub-keys under this one, such as 0000, 0001, etc. You are interested in two of them that say Primary IDE Channel and Secondary IDE Channel.
- Make the following changes to both of those keys:
- Delete any attributes named MasterIdDataCheckSum or SlaveIdDataCheckSum. This resets the tracking for errors that Windows uses to determine when the transfer mode should be lowered.
- Add an attribute with the name ResetErrorCountersOnSuccess and a DWORD value of 1. This tells Windows that it should lower the transfer mode when there are six consecutive errors instead of six cumulative errors.
- If they exist, set the following keys to a hexadecimal value of ffffffff (eight F's). This will change the transfer modes to UltraDMA-6:
- MasterDeviceTimingMode
- MasterDeviceTimingModeAllowed
- SlaveDeviceTimingMode
- SlaveDeviceTimingModeAllowed
- UserMasterDeviceTimingModeAllowed
- UserSlaveDeviceTimingModeAllowed
- Reboot your computer and check the devices to see if they are set to UltraDMA Mode 6.
Let me know about your experiences with this tweak.