The problem these days with computers
isn’t the
MIPS:
it’s something not so obvious –‘latency’.
Roughly speaking, latency is the gap between the CPU
wanting to do something and being able to do it. A lot
of effort has gone into microprocessor ‘pipeline’ architectures – queuing
instructions for efficient execution - and first and
second level on-chip instruction caches where instructions
are held ready for the microprocessor to run. In addition,
memory access speeds have improved with DDR RAM
and similar technologies. But the one place where latency
hasn’t
improved is with the good old hard disk. While the CPU
can execute an instruction in a fraction of a nanosecond,
it still takes milliseconds to get the data to the microprocessor
in the first place. To put it another way, the microprocessor
can execute instructions ten million times
faster than it can get them!
What A Difference A Day Makes!
BEFORE: (Above)
This is a moderately fragmented disk only a single
day after the last defragmentation run. You can
see how poorly Windows has allocated the files,
splattering them all over the disk.
AFTER: And here’s the disk
after a Diskeeper run. The disk is now pretty well
optimised and the data transfer speed is about
as fast as it gets. |
Most people, most of the time, only think about the
disk when it either gets full or makes a horrible scrunching
sound as it dies. Disks are neglected. But paying a modest
amount of attention to your rotating metal can – and
often does – improve performance dramatically.
Windows seems to allocate files by trying to use the
disk as ‘efficiently’ as possible. In Windows
terms, this means that the file can be (and usually is)
spread over the disk in several parts. When a program
comes to read the file, the disk has to move physically
to retrieve the various parts of the file. This takes,
in CPU terms, forever.
It’s a good idea then, to try and keep each file
in one piece so that the read or write can take place
in one go. This is where defragmenting your disk comes
in. And the tool to use is Diskeeper. In fact, Diskeeper
comes bundled in with Windows XP. If you look under ‘Programs,
Accessories, System Tools’ you’ll see a Disk
Defragmenter. This is an entry level version of the full
Diskeeper package.
There are several differences between the full Diskeeper
and what you get for free. To me, the main one is the
ability to perform a ‘boot time’ defragmentation
which allows you to defragment and modify the Windows
Master File Table or MFT which is used to store much
of the file system’s data. The full version also
has the ability to continuously defragment your disk
with Diskeeper’s ‘Set It and Forget It’ option
which runs in the background, keeping your disk at optimum
capability. Additionally, the full version also runs
up to five time faster than the free version (see the
details here).
So how does it work in practice? I found that, with
a slightly defragmented disk, running Diskeeper didn’t
make that much obvious difference to its performance.
Even though my most commonly used files were very fragmented,
Windows caches the files by using a fair chunk of the
available main memory; as a result, the commonly used
files are already entirely in memory. But on a heavily
fragmented disk – for example on my laptop which
has a slowish 5400 rpm disk, as laptops typically do
- it made a huge difference. Loading a big Visual Studio
project was noticeably faster – about 30 seconds
faster – after running Diskeeper and defragmenting
the disk.
On my desktop PC, where I hadn’t done a defragmentation
in living memory, the speedup was also very noticeable.
Program opening – again Visual Studio - was a good
bit snappier having done a defragmentation run. This
illustrates the advantages of using the ‘Set It
and Forget It’ option, by the way. People, myself
included, just don’t remember to defragment their
disks. One other effect: shutting down my PC took a lot
less time too.
Diskeeper 10 has a number of improvements over the previous
release. The user interface is somewhat clearer; not
that it really needs to be - defragmentation is, after
all, just a matter of setting Diskeeper going. Executive
Software says that Diskeeper 10 has been internally redesigned.
In particular, the Intelligent File Access Acceleration
Sequencing Technology (I-FAAST) monitors your disk to
determine which files are accessed most often and positions
them so that they can be accessed faster. Also of interest
is the way Diskeeper intelligently monitors the windows
I/O queue so that the background defragmentation operations
are suspended when you want to do something – compile
a program, say. This seems to work quite well. With the
previous version of Diskeeper, the background defragmentation
did produce a noticeable performance hit when it was
running. I can’t say that I notice Diskeeper
10 at all. But then, if Diskeeper is working correctly,
that’s as it should be. This is totally unlike
my virus scanner, incidentally, which kicks into life
at a certain time every day on my PC and reduces performance
to the that of the proverbial slug on tranquilizers.
Virus scanners please take note!
Interestingly, defragmentation doesn’t seem to
be much of a problem with Unix systems. I suspect that
this may be down to the historical (and intentional)
way that Windows allocates file storage. Most Windows
systems sell, and have sold, into the consumer market
where today the difference between a 100GB disk and a
160GB disk may only be a few dollars. But in the past,
the price difference between a 1GB disk and a 4GB disk
was substantial. Whatever the cause, the current mechanism
for file allocation in Windows is distinctly sub-optimal
and if you want tip-top performance, you must defragment.
For home users, suffering a small performance hit due
to defragmentation isn’t going to matter much.
But for a professional software developer, I think Diskeeper
is well worth it. Put it this way: woodworkers don’t
use blunt tools and programmers shouldn’t have
to put up with slow disks.
Dermot Hogan
January 2006
|