Link to home
Start Free TrialLog in
Avatar of gplana
gplanaFlag for Spain

asked on

Performance problem on Hard Disk


I have two hard disks installed on my computer: on one C: and one on D:

I have run HD Tune 2.55 (a program that measures the speed of the hard disk) which says my C: unit speed is about 10MB/sec, meanwhile my D: unit is about 100MB/s.

C: is a Western Digital Hard Disk and D: is a Seagate Hard Disk. Both have 1000GB (1TB) of capacity.

Both drives arahciue SATA and OnChip SATA mode is configured in IDE mode on BIOS (I tryied to change this to  AHCI mode but then my Windows XP doesn't start).

My computer is a Quad CPU with 8GB or RAM, running Windows XP as operating system. Any help to improve my hard disk performance will be appreciated.

Avatar of David
Flag of United States of America image

You need to reinstall the O/S to get AHCI ... which is a good idea because AHCI mode enables more efficient I/O, and additional low-level commands to facilitate less overhead and larger transfers.  The way it is now, every byte of I/O is causing an interrupt.

Alternately ... it will probably work if you:
 * Buy a USB->SATA bridge adapter (under $20) to enable that SATA disk to attach to a USB port.
 * Buy a new HDD (same or greater capacity, you can then use the current C drive for backup later).   $80 or so.   If the HDD does not come with disk cloning software, then download something (I prefer just using a USB stick booted to LINUX).

 * THen shut down, remove the C drive, and unplug power to the D disk to prevent it from being accidentally written to.
* Put the replacement drive inside the PC where C is
* Turn on everything, enable AHCI in BIOS.  It should now see the new disk that will become C, plus the original drive.
* Clone your O/S from the USB drive to the new AHCI disk (booted to USB stick or cloning software that typically comes on CDROM)

* unplug the USB port for safety.
* Boot to the new disk.   Then shut down if OK, plug power into the D disk, and then everything should come online.

Once new disk is booted, you are good to go.  The other drive in the USB is backup.
I've used Acronis Disk Director many times for disk cloning, and it's always worked for me.  Just take your time with it, and it's all cool.  Free trial too!
P.S.  Since you are running XP, then no way would the AHCI drivers already be installed, unless you installed an OEM version of the o/s specifically for your motherboard.  

Actually, just buy a copy of Win7 64-bit.  I doubt this will work.  Besides, XP won't let you use all your memory either, and XP doesn't have native SATA drivers ... so unless this is an OEM version of windows, pre-installed with all drivers, then I don't think you will even be able to migrate XP.  Sorry.  You'll probably just have to live with this issue until you do a re-install.
First, you noted in your system specs that you have 8GB of RAM ... but XP x32 can has a 4GB address space; and some of that is reserved for system level functions, so you're only using around 3-3.5GB of that memory.    That's not the reason your disk is operating slow;  but it may be something you want to consider.     Microsoft is offering electronic downloadable Windows 8 Pro upgrades for only $39.95 through the end of January -- so you may want to simply upgrade to Windows 8 to resolve not only your disk access problem;  but also allow you to use all of your memory.   [Note you would lose all of you installed programs and all of your data -- so you'd need to first save your data and then reinstall all of your programs.]

If you prefer to stay with XP, the first thing I'd check with such slow disk access is whether the system has reverted to PIO access mode for your C: drive.    Go to Device Manager;  expand the IDE/ATA/ATAPI Controllers line (click the "+" sign);  and then, for each of the channels (primary and secondary), right-click, select Properties;  click on the Advanced Settings tab.   See what the "Current Transfer Mode" is for all devices.    If ANY of these show "PIO" then that's your problem.     There's a fairly simple registry mod that will resolve it.

If that's not the case, then there are a few other things you can try ==> but first check that and post back with the results.

... by the way, running in IDE mode is fine.    Switching to AHCI would require a reload of XP;  and does NOT provide any significant benefits in a non-server OS.    The key benefits you gain are (a) hot swap support; and (b) "elevator" seeking, which allows more efficient disk access when multiple requests are being processed simultaneously (not a common scenario on a desktop system).
There is certain ways to get AHCI to work on an already installed OS.  Make sure you have the latest chipset installed on your system.  Then go to the following registry key.


Change the value of start to 0.

Reboot your computer and change to AHCI in BIOS.  The system will boot and install the AHCI drivers.  NOTE:  Set a system restore point first, just as a backup.

I know this works on Vista and 7, but not positive on XP.

As for your hard drives, if your main drive (The Western Digital) is a Caviar Green, they are generally problematic for speed.  I've ran into it myself too many times building a system.  I no longer use the Green drives as the OS drive, just because they have this issue.  I'm assuming the issue comes from the fact that the drive runs at 5400RPM (or 5900 in some cases).

If you do reload your system, make sure your OS drive is the drive with the fastest RPM and biggest CACHE.
The AHCI spec didn't even come out until maybe 2 years after XP was shipping, so don't hold  your breath that you even have AHCI drivers ... unless it is an OEM version of windows designed for your AHCI-compatible computer, and you have a WinXP SP2 or SP3 distribution.
The registry mod to switch to AHCI only works in Vista and '7 => it does NOT work with XP.    I'm not aware of any way to switch XP to AHCI short of reinstalling it with the appropriate drivers added during the install (via F6).

... but as I noted above, it has virtually no impact on the speed of the drive => it's definitely NOT the problem you're having.
check first if pin 5 and 6 are not jumpered, to enable 1.5 GB transfer speed, as shown here  :
While it certainly won't hurt to confirm that the drive isn't configured to run at SATA-I speeds; that is NOT the problem here.    Even SATA-I is far faster than the sustained transfer rate of the platters ... so it would not be limiting the transfer speeds seen by HDTune.
Avatar of gplana


Thank you all of you for giving me your answers even on christmas!.

garycase: I think you are right: my problem seems to be my primary hard disk is working on PIO mode. Both hard disks are configured as "use DMA is possible", but primary is using PIO while secondary is using DMA ultra mode 6. How can I enable DMA for my primary device?

I'm thinking also in changing my XP by Windows 7 (I don't really like Windows 8). Should I enable AHCI mode before or after installing Windows 7?

Avatar of Gary Case
Gary Case
Flag of United States of America image

Link to home
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of gplana


garycase: thanks you very much for your answer. I can't see values "MasterIdDataChecksum" or "SlaveIdDataChecksum". I have export HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}.

Thanks too for your advice about Windows 8 and Stardock's. I will consider it.
Look closer.   In your key ...0002 there is both "MasterIdDataChecksum" key and a "SlaveIdDataCheckSum" key;  and in your key ...0003 there's a "SlavIdDataCheckSum" key.    Delete all 3 of those keys -- then reboot.
Avatar of gplana


Oh, you are absolutely right. Sorry. I looked to values instead of keys, so I haven't seen these texts on values.

I deleted these 3 values, reboot, and now HD tune shows 115MB/s as a maximum value (however it shows 11MB/s as minimum value, but I think this is an outlier).

I think now all will be good. However, is there anything else I can do to improve performance? (apart of installing Windows7 or 8 instead of my XP) ?
Not a lot to suggest without actually seeing the system.

A few common things that may help ...

=>  Defrag the disks
=>  Uninstall any unused utilities/programs
=>  See what all is starting up during the boot process ... and disable those things that aren't really needed [You can use MSConfig to check this and to easily disable various startup items to see what impact that has on performance]
=>  Clean out the registry.   I'm not a big fan of registry cleaners -- but they can make a difference if the system has a lot of unnecessary "registry trash".      The only one I recommend is MaceCraft's JV16 ... they have a free version that's quite good:
FYI - the biggest problem you have with performance is AHCI, and it is not being emphasized enough.  Your IDE drivers disable NCQ. This means no I/O queuing.  One I/O gets done at a time.  There is no multitasking and automatic reordering of I/O.  

To put in perspective, say you have a read request at block 100, then one at block 9999999 then another at block 101 for multiple processes or threads going on.  (This is quite common, especially when you consider that NTFS is always updating certain logs and directory info).

With NCQ, the HDD will reorder so that it reads blocks 100-101, returns the result, then goes to 9999999 and returns the result.   With your system, it reads 100 then goes to 9999999 then it goes to 101.   This might take 10X longer.  

Defragging helps because it minimizes (to a small effect) bouncing around getting files, but since so many things are going on at once, in the grand scheme of things, it isn't all that statistically significant.   You can prove this to yourself by reading a fragmented file into the bit bucket, defragging, and then repeating.  It might save you 20 milliseconds on a 10 second test.  

HDDTune is not a real-world indicator of performance anyway.  You don't do large block sequential reads.  You can't.  NTFS is probably set for 4KB chunk size anyway, and since your system can not process I/Os in parallel, and you run services that also do I/O then HDDTune can't replicate real-world.   Not only that, but HDDTune cheats by raising I/O priority for HDDTune, so other applications are starved for I/O.

Update to Win7 if you want major performance increase (along with using AHCI).   Here is something else you could do for an incremental improvement ... repartition C into C & E.  Then build E with NTFS and a larger NTFS size, like 64KB.   Move files there.  If you do that, then you will read a minimum of 64KB at a time, instead of 4KB at a time.
With a desktop OS (i.e. not a server) there's very little benefit from AHCI.   NCQ ("elevator seeking") is indeed a nice feature -- but the vast majority of disk accesses with a desktop OS are sequential.    NCQ only helps when there are a lot of simultaneous accesses (common with servers).

... it's true that NCQ will help a bit with NTFS logging -- but in a desktop environment that's simply not a significant factor.
Everything is relative, but a 2X - 3X overall performance increase with NCQ enabled can happen.   I found these two graphs that compare same HDD with NCQ enabled/disabled on Win7. The numbers speak for themselves.

Open in new window

User generated imageUser generated image

Source: Tom's hardware
Completely agree that in a transactional environment with high IOPS (like a server or database server) there's a big advantage to AHCI-enabled disks => not because there's any difference in transfer rates, but because the more efficient "elevator seeking" (i.e. NCQ) will significantly improve IOPS.

But a desktop environment is NOT typically a high IOPS environment.     Clearly there are exceptions =>  small businesses and home users sometimes use a desktop as effectively a server ... but in the vast majority of home user cases it's effectively irrelevant whether or not NCQ is enabled.