Minimum Read Speed

Realities of Hard Drive Fragmentation

Add Your Comments

We have all heard that defragmenting a hard drive (HDD) can give you a boost in performance. Is this just a an old wive’s tale or is it grounded in reality?

Most of us, whether we are top-notch IT talent or just a regular Joe or somewhere in between know that taking care of a computer and doing some basic upkeep can keep it running at a decent clip.  Defragmenting a HDD is one of those basics that we should all do and has been so since well, mechanical HDDs came into existence.  However, is this just good housekeeping practice based on actual results, or is it just one of those myths about what to do with your computer to keep it running well?

The Test Setup

To set this test up and to keep it fair, I am using VirtualBox. The image I built is based off of Windows XP SP3 in a 14.9gb image.  I downloaded and installed all possible windows updates (critical or not) from Microsoft as of 02/08/2010 .  I then installed MS Office 2007 and downloaded all the updates for it.  I then uninstalled office and the updates for office.   I then copied many photos to and from the drive.  I then removed every other photo (over 2,000 photos), then installed Microsoft Office 2007 and downloaded the updates for it again.  I then deleted all of the photos.  I then used a program called Fragger to purposely fragment the rest of the drive (fragger wrote 5,706mb of pure fragmentation to the image).  I then installed all of the softwares to be used in this test (the defragmenters) so they would be preinstalled on the backup image.  I then used the function built into VirtualBox to make a backup image of the virtual machine so that I could restore from that backup for the purpose that each defragmenter has a fair chance on the same exact fragmented dataset.

To start things off, I needed to find some sort of baseline for performance.  After doing much searching, I settled on a free tool called HDTune.  It isn’t as full featured as the full pay-version of the program, but for the purposes of these tests, it was more than enough.  It gave me 4 readings that I felt were the most relevant to the tests I was doing: Minimum Read Speed, Maximum Read Speed, Average Read Speed, and Access Time.

I did not measure defragmentation time as I started each of them defragmenting before i went to bed each night, so time didn’t matter to me.  I would like to go ahead and say that I feel it is safe to assume most others do something similar.  With defragmentation being something that should be done at least, in my opinion, once a month, it will tend to be something that is set to be done while the pc is not in use, like during the night while you are sleeping, thus why I tested in this manner.

I then found myself ready to run the tests.  Then the bright idea occurred to me: Maybe Virtual Box will have a massive impact on the tests, so I need to have a comparison of my HDDs read speed outside of Virtual Box and inside of it.  So, I ran those tests.  I then decided that once I ran all the tests, I would use the winner of the tests and defragment my harddrive (previously defragmented with MyDefrag before building the Virtual Box image) to see if it improved things any, especially after deleting and restoring multiple 15gb images in the process of the tests.

The version of Virtual Box used in this test was Virtual Box 3.0.12r54655.  The HDD that I am using and got the original base results to compare against is a ST3250410AS with Windows XP installed on it.  Also, where needed, I will note what options I used with each defragmenter in an attempt to get the ‘most’ out of the program.

The Defraggers

The Results Inside of Virtual Box

The first thing I needed to do inside of Virtual Box was to get a baseline reading that I could compare against.  The first reading I took was just after installing Windows XP SP3 and all of the updates – critical or not – available at the time.  This would represent the fresh system install speed that we all know and love so well.  The results are as follows:

Minimum Speed (Mb/s) Maximum Speed (Mb/s) Average Speed (Mb/s) Average Access Time (ms)
0.7 58.6 39.2 25.6

I then needed a baseline test after all the work I put into purposely fragmenting the image, the results of which are below. What was surprising to me was how far the average read speed fell.

Minimum Speed (Mb/s) Maximum Speed (Mb/s) Average Speed (Mb/s) Average Access Time (ms)
4.9 57.7 31 13

Now, for a baseline defragmentation, and the standard against which all the other defragmenters in this roundup will be measured, I ran the built in defragmenter that comes standard with WindowsXP.  The results that came back were very surprising, which when I ran this, gave me great hope for what the others might be able to accomplish as they are all touted as ‘better’ than the default built into windows.

Minimum Speed (Mb/s) Maximum Speed (Mb/s) Average Speed (Mb/s) Average Access Time (ms)
5.7 59 50.6 7.5

3rd Party Defraggers

Now, with that as a nice set of baselines to compare against, I then went on with the rest of the tests.  After every time that I restored the image, I would then defrag the image, reboot it, then run the tests.  The next results are of my defragger of choice (before i ran these tests).  After the tests, will it still remain my favorite?  We shall see.  The next results are for MyDefrag.  For options, I chose Defrag Monthly for the most thorough defrag.

Minimum Speed (Mb/s) Maximum Speed (Mb/s) Average Speed (Mb/s) Average Access Time (ms)
22.4 204.8 67.9 8.4

These results had me excited.  That big of a boost over the default defragger aside from Access Time (which would prove to be the only thing that the XP Defragger was better at in the end, to only slightly spoil the results).   However, with these results in, it was now on to the next defragger: Defraggler by Piriform.  For options, I chose – Move Large Files to End of Drive.

Minimum Speed (Mb/s) Maximum Speed (Mb/s) Average Speed (Mb/s) Average Access Time (ms)
23.5 206.6 68 8.2

The next candidate up for testing is one that I found quite by accident while looking over slickdeals.net for some deals on Steam.  Puran Defrag is a program that used to be payed-for software that is now freeware.  I decided to give it a chance in this roundup to see if a ‘payed for’ style program was worth the money it used to cost.  The option I chose on this one was to use the setting: Boost overall system speed by Puran Intelligent Optimize

Minimum Speed (Mb/s) Maximum Speed (Mb/s) Average Speed (Mb/s) Average Access Time (ms)
1.3 207 50.9 8.6

Then, the next test was on to a program I had used in the past, then decided to stop using once I found MyDefrag (formerly JKDefrag) as it didn’t feel as fast after defrags.  Would this test bear that out?  The options I chose for this one were: remove temp files before defragmenting, move system files to beginning of disk, defrag and optimize

Minimum Speed (Mb/s) Maximum Speed (Mb/s) Average Speed (Mb/s) Average Access Time (ms)
5.4 206.8 58.9 9.0

Then, the final program in our roundup was suggested to me by fellow forum member C627627.  Vopt was a program I had never heard of, but since it was a free download, I decided to add it to the test and to see how effective it was.  The options I chose that were available to me in this one were: tighter packing, move system restore to end of drive.

Minimum Speed (Mb/s) Maximum Speed (Mb/s) Average Speed (Mb/s) Average Access Time (ms)
19.7 202.7 57.9 9.3

The Results Outside of Virtual Box

Before doing the battery of tests that I did, and knowing what would happen to my HDD after deleting and restoring a 15gb image file over and over, I ran a preliminary speed test on my HDD to see what the transfer rate was outside of Virtual Box so that I could see what the affects of running the tests inside of Virtual Box would be, if any affect.  Those results are below.

Minimum Speed (Mb/s) Maximum Speed (Mb/s) Average Speed (Mb/s) Average Access Time (ms)
4.7 81.8 73 15.3

I then decided that for a final bit to test my drive to see if the overall results winner actually improved anything, I used Defraggler with the same options as in the Virtual Box test, then ran HDTune one last time.

Minimum Speed (Mb/s) Maximum Speed (Mb/s) Average Speed (Mb/s) Average Access Time (ms)
52.1 81.8 74 15.2

So, even though the improvements were minimal aside from minimum speed, it still improved over even the MyDefrag results before all the other tests.

Results Summary

Minimum Read Speed (Higher is better)

Minimum Read Speed (Higher is better)

Maximum Read Speed (Higher is better)

Maximum Read Speed (Higher is better)

Average Read Speed (Higher is better)

Average Read Speed (Higher is better)

Access Time (Lower is better)

Access Time (Lower is better)

Conclusions

With the results of the tests in, it seems the ‘old wive’s tale’ of defragmenting your HDD to maintain performance is not only true, the results of it were astounding.  Even if you don’t use a 3rd party defragger, the tool built into Windows itself gives a massive boost in performance.

I do realize that these results are only for my machine and specific for only a  virtual machine inside of Virtual Box.  Even as that may be, I feel there are two 3rd party defraggers I can confidently recommend to anyone to use on their machines as their results are so similar, and the overall increase in speed is different by only 0.1Mb/s.

So, congratulations are in order for MyDefrag 4.2.7 and Piriform Defraggler 1.16.165!

- TollhouseFrank

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Discussion
  1. thanks for this! just dl'd defraggler and it's running in the background :)

    i'm so ashamed... my os drive was at 26% and the data drive was at 38%. BAD NERD!
    No, the tests actually would all need to be re-ran to test for issues readers reported with the testing. However, the author has been busy with other things and hasn't gotten back to designing or rerunning a new round of tests.

    If anyone is interested in doing the legwork involved with that after submitting a methodology which we've reviewed and approved, we'd be happy to publish updated results.
    I.M.O.G.
    Not sure, but that should work! :)


    Are these results still relevant?

    Has the Windows 7 defrag utility been improved over XP?

    Have any of these 3rd party defraggers been updated to increase performance?
    Might try sending Frank a PM, seems he hasn't followed up on this thread lately and maybe a poke will help - I know some real life things have been keeping him busy, but he is still around regularly.
    Hi Frank

    Well done - thanks for being so generous with your time & energy to share the results of your defrag testing

    I appreciate that the methodology is still being tweaked & the need for that discussion - but thought this summary of the results of your tests might be helpful (please let me know if anything needs correcting here):

    Defraggers initially tested (reported 18/2/2010):

    * Windows XP

    Default Defragmenter

    * MyDefrag 4.2.7

    * Defraggler 1.16.165

    * Puran Defrag Free 7.0

    * Auslogics Defrag 3.1.2.90

    * Vopt 9.21

    Best overall results: MyDefrag 4.2.7 & Piriform Defraggler 1.16.165

    Also tested:

    * Defrag Express

    * Diskeeper 2010

    (if I understood the results correctly MyDefrag & Defraggler still rate best)

    Would there be any significant difference in results between MyDefrag 4.2.7 & MyDefragGUI 2.1 ?

    ----

    Now here are a list of defrag wares that would be worth testing (though some may be trial versions

    - not sure if all of these are freeware):

    * Auslogics Disk Defrag (been getting a good rap on other forums)

    * IObit Smart Defrag (quite popular so worth testing)

    * Vista & Windows 7 Defrag (goes without saying)

    * O&O Defrag (requested by other members in thread)

    * Perfect Disk (requested by other members in thread)

    * UltraDefrag (requested by other members in thread)

    If anyone out there knows of any other worthy freeware defraggers then please advise!
    By the way I've used IObit Smart Defrag every few months, now doing full Vista defrag on my notebook (with no other apps running) & it's already taken over 24hrs & still running– does anybody know if that's possible without there being some kind of problem?

    My spec's are: HP Pavilion DV9520TX with Intel C2D T7500 2.2GHz, 4GB RAM, Vista OS & all wares on 160GB HDD & all music & docs on 500GB HDD
    Hi Frank

    Well done - thanks for being so generous with your time & energy to share the results of your defrag testing :cool:

    I appreciate that the methodology is still being tweaked & the need for that discussion - but thought this summary of the results of your tests might be helpful (please let me know if anything needs correcting here):

    Defraggers initially tested (reported 18/2/2010):

    * Windows XP Default Defragmenter

    * MyDefrag 4.2.7

    * Defraggler 1.16.165

    * Puran Defrag Free 7.0

    * Auslogics Defrag 3.1.2.90

    * Vopt 9.21

    Best overall results: MyDefrag 4.2.7 & Piriform Defraggler 1.16.165

    Also tested:

    * Defrag Express

    * Diskeeper 2010

    (if I understood the results correctly MyDefrag & Defraggler still rate best)

    Would there be any significant difference in results between MyDefrag 4.2.7 & MyDefragGUI 2.1 ?

    ----

    Now here are a list of defrag wares that would be worth testing (though some may be trial versions - not sure if all of these are freeware):

    * Auslogics Disk Defrag (been getting a good rap on other forums)

    * IObit Smart Defrag (quite popular so worth testing)

    * Vista & Windows 7 Defrag (goes without saying)

    * O&O Defrag (requested by other members in thread)

    * Perfect Disk (requested by other members in thread)

    * UltraDefrag (requested by other members in thread)

    If anyone out there knows of any other worthy freeware defraggers then please advise!
    Very good write-up! I was amazed by the numbers that Piriform Defraggler posted, which is also the defrag utility that I use. An average read speed of 68 Mb/s is superb. That is almost on par with the numbers you posted outside of virtual box. Interesting.

    If anyone wants to pick up defraggler, you can get it here
    You might want to look into using diskeeper 2010 as well. I swear by this form of De-fragmenting. But for a free solution I use Defraggler as well.. very Slow , but it works..

    I never knew that there was a myth about defragging. It has always been proven since windows 98, that defragging speeds up file access and booting... Just wish there was a way to track it and test each file...for real world proof...
    I.M.O.G.
    That is true for sparse/growable disks, but not for preallocated disks.

    You cannot defragment a virtualdisk file on the host, unless you are using growable/sparse disks on vmware.

    This document reflects the idea you have:

    http://www.vmware.com/support/ws55/doc/ws_disk_defrag.html

    What it does not state, is that you cannot defragment a preallocated virtual disk file:

    Source: http://www.vmware.com/support/ws55/doc/ws_disk_manager_examples.html

    Additionally, notice how this defragmentation tip for vmware focuses on growable disks (or sparse virtual disks, same thing, different terminology):

    http://blogs.vmware.com/teamfusion/2008/10/tip-defragmenta.html

    So if you are using a sparse virtual disk, which is default in vmware fusion, then your defragmentation is a 3 part process. The only advantage of using sparse virtual disk is that your VM's will take up less space on the host system - the tradeoff is non-optimal performance and more complicated defragmentation. For anyone else who is preallocating the disk space for the VM, a 2 step defragmentation on the host and guest is all that is required.
    The attachment to this post shows settings I usually use when creating a VMWare virtual machine in VMWare Workstation 6.5.3.

    I have noticed that Virtual Machine host file is defragmentable when the options are used.

    I note that I do sometimes make virtual machine snapshots. This seems to add large files for which the size of the aggregate is less than the size of the original virtual host file(s). Perhaps this may be considered a "growth".
    The attachment to this post shows settings I usually use when creating a VMWare virtual machine in VMWare Workstation 6.5.3.

    I have noticed that Virtual Machine host file is defragmentable when the options are used.

    I note that I do sometimes make virtual machine snapshots. This seems to add large files for which the size of the aggregate is less than the size of the original virtual host file(s). Perhaps this may be considered a "growth".
    That is true for sparse/growable disks, but not for preallocated disks.

    You cannot defragment a virtualdisk file on the host, unless you are using growable/sparse disks on vmware.

    This document reflects the idea you have:

    http://www.vmware.com/support/ws55/doc/ws_disk_defrag.html

    What it does not state, is that you cannot defragment a preallocated virtual disk file:

    Source: http://www.vmware.com/support/ws55/doc/ws_disk_manager_examples.html

    Additionally, notice how this defragmentation tip for vmware focuses on growable disks (or sparse virtual disks, same thing, different terminology):

    http://blogs.vmware.com/teamfusion/2008/10/tip-defragmenta.html

    So if you are using a sparse virtual disk, which is default in vmware fusion, then your defragmentation is a 3 part process. The only advantage of using sparse virtual disk is that your VM's will take up less space on the host system - the tradeoff is non-optimal performance and more complicated defragmentation. For anyone else who is preallocating the disk space for the VM, a 2 step defragmentation on the host and guest is all that is required.
    I.M.O.G.
    If you are using a virtual disk for your VM, you should allocate all required space on the host for the virtual disk from the start. The situation you propose could only occur if disk space is not preallocated on the host. Defragmenting a virtual disk within vmware is actually only possible if your using a growable disk.
    I use fixed sized disks. You had described

    ...there are 2 possible fragmentation scenarious when using a VM with a virtualized disk. This file can be fragmented on the host, which can be resolved by defragmenting the host system. The guest can experience fragmentation within this file, which is resolved by defragmenting from within the guest.


    There are three levels of fragmentation that may affect a virtual guest file system for VMWare virtual disks:

    Fragmentation of the host system file system (including files to store virtual machine information). This fragmentation may be defragmented on the host system by using a defragmentation tool.

    Fragmentation of the content of host file storing a guest (virtual) system. Defragmenting the contents of the host file may be performed using a utility provided by the virtualization software vendor/owner (may be incorporated into main virtualization software).

    Fragmentation of the guest (virtual) system file system. This fragmentation may be defragmented by deframenting the guest (virtual) system file system from the running guest system. Defragmenting a guest file system fragments the host file storing the guest (virtual) system.

    It is possible for the virtual (guest) system host file to be unfragmented on the host system, but fragmented within.
    zzzzzzzzzz
    When using a file to represent a storage device, much time is spent . When the represented information becomes fragmented, it often is necessary to defragment three times to defragment a virtual machine and its represented information in a timely manner: first the container file is defragmented, then the represented information (operating system, virtual files, etc.) are defragmented, then the container file is defragmented again (after becoming fragmented by the defragmentation of the virtual content).


    If you are using a virtual disk for your VM, you should allocate all required space on the host for the virtual disk from the start. The situation you propose could only occur if disk space is not preallocated on the host. Defragmenting a virtual disk within vmware is actually only possible if your using a growable disk.

    Assuming a properly configured virtual disk on the host, there are 2 possible fragmentation scenarious when using a VM with a virtualized disk. This file can be fragmented on the host, which can be resolved by defragmenting the host system. The guest can experience fragmentation within this file, which is resolved by defragmenting from within the guest.
    bcsizemo
    If you are using a VM to test with you are essentially using a single file as the virtual file system. This in effect would be similar to short stroking a drive. So if that VM file is 15 gigs on an 80 gig drive...
    This should not matter when the results are used only for relative comparisons. However, due to rounding or truncating decimal values, the accuracy of the relative comparisons might be decreased.

    bcsizemo
    just wanted to point out that you could have fragmentation inside fragmentation....
    This is something I quite dislike when working with a virtualization software VMWare Workstation.

    When using a file to represent a storage device, much time is spent . When the represented information becomes fragmented, it often is necessary to defragment three times to defragment a virtual machine and its represented information in a timely manner: first the container file is defragmented, then the represented information (operating system, virtual files, etc.) are defragmented, then the container file is defragmented again (after becoming fragmented by the defragmentation of the virtual content).

    A VMWare virtual machine may be set to use a physical disc instead of a file to store the virtual content.

    I have never used nor have examined VirtualBox.
    I hope I don't point out something someone else has already brought up, but here goes...

    If you are using a VM to test with you are essentially using a single file as the virtual file system. This in effect would be similar to short stroking a drive. So if that VM file is 15 gigs on an 80 gig drive then you are going to be limited to the a theoretical max transfer speed depending on where that 15 gig file resides on the 80 gig drive... (and if you are deleting and coping it back every time you start a new test that might cause issues with fragmentation of the file itself...)

    I would think in order for the test to be valid you could not use it inside a VM. Or at best if you did, you would be testing the impact of fragmentation on the VM itself. (And either way this is what needs to happen in order to form the baseline image: )

    Like several others have said you have to copy the bits. Or more exactly you need to sector copy the initial image. This would give you a consistent starting point to measure from each time. If you simply copies the VM file back to the drive you may end up with file fragmentation. Or if you made an image of the system it would probably defrag itself during the creation/restore process. (I know Ghost used to work like that for a standard disc clone.) I would also install all of the test programs first to minimize changes to the initial image as much as possible.

    If we going more for a copy/move/creation type of test setup, having a second drive as the frag drive might be a good idea. Instead of using/copying a whole OS, just have a secondary data drive be the fragmented one. While it wouldn't give you as tactile results as restoring the OS each time it would be somewhat easier.

    Don't want to rain on any parades, but just wanted to point out that you could have fragmentation inside fragmentation....