Check DMA Timing Modes on IDE Devices!

If your PC experiences any of these problems:

  1. excessive CPU usage during simple tasks
  2. jumpy DVD movie playback
  3. overall slow behavior when accessing IDE disks

It is possible one or more of your IDE drives have reverted from "DMA mode" to "PIO mode".  In PIO mode, the CPU has to hand-hold each and every byte of data transferred to or from the IDE drive, causing excessive interrupts, port I/O, and CPU usage.

This problem, is described by Microsoft here: http://www.microsoft.com/whdc/device/storage/IDE-DMA.mspx

A potential hotfix is described here: http://support.microsoft.com/kb/817472 

Basically, Microsoft seems to be overly aggressive in reverting to PIO mode, and once this occurs, it persists forever, basically making the PC unusable in many cases.

The best way to check for this problem is to run Process Explorer from: http://www.microsoft.com/technet/sysinternals/utilities/processexplorer.mspx

The telltale sign of the problem is excessive time spent in "Interrupts", when View -> Show Processes From All Users is selected.

You can verify the problem further by installing kernrate.exe from: http://www.microsoft.com/whdc/system/sysperf/krview.mspx

You invoke it from a cmd.exe window as follows, while your system is misbehaving, to zoom into the HAL CPU usage:

    kernrate -av -z hal

And if you see lots of CPU usage like the following, you can be almost sure you have the issue:

  Time   16219 hits, 19531 events per hit --------
   Module                                Hits   msec  %Total  Events/Sec
  HalBeginSystemInterrupt               11148      36668    40 %     5937918
  HalProcessorIdle                      11119      36668    40 %     5922471
  WRITE_PORT_BUFFER_USHORT               3832      36668    13 %     2041092
  READ_PORT_BUFFER_USHORT                1090      36668     3 %      580582
  KfLowerIrql                              61      36668     0 %       32491
  KeGetCurrentIrql                         23      36668     0 %       12250

You can verify this using Device Manager, as well, by looking at the Advanced Properties on both your Primary and Secondary IDE controllers -- they should indicate a DMA mode, not PIO mode, for the Current Transfer Mode of all detected devices, for any relatively recent PC, as follows:

If one or more of your devices are in PIO mode, you have lots of alternatives that might work to fix it, including uninstalling and reinstalling the device (I didn't have the guts to try this on my root disk! :-).  Just do a google search like:

    http://www.google.com/search?q=dma+pio+ide

and you'll see many folks struggling with this.

If you want to try a simpler solution, or you're not sure if you have the problem, you can run the following VBscript file which we've tried on lots of systems, but of course comes with the standard Microsoft disclaimer about editing the registry -- use at your own risk!

    dmatiming.zip

This file (dmatiming.vbs) is just a script so you can examine what it does before running it.  It asks for confirmation before making any registry changes.