Boot-oriented disk defragmenter


Everybody is annoyed at how long it takes computers to boot. Some use hibernate mode to save a copy of the system in a booted state, which is one approach. Booting procedures have also gotten better about running stuff in parallel.

How about watching a system as it boots, and noting what disk blocks are read to boot it. Then save that map for the disk defragmenter or other disk organizer and have it try to rearrange the files needed at boot so they are all contiguous
and close together. This should reduce the role of I/O as a boot bottleneck. Many disks today can read 50 megabytes in a second, and most OSs only need to access a few 100MB in order to boot, and they have the ram to only need to read files once.


Hi Brad --

What XP, some linux distros, and Mac OS X are doing nowadays, is using "read-ahead" -- monitoring which files are read during boot, then "preloading" them into RAM as soon as possible so that as much of the boot process takes place from the buffer cache. Since much of the boot process is spent doing things like talking to other hardware, waiting for network activity, etc., this means that I/O preloading can take place at that time.

See: (search for "BootCache") (one Linux distro using readahead) (an old LKML thread on the topic)


And may be enough, but readahead is even better if the files you are reading ahead are just one long stream of contiguous blocks on disk.

I don't know of anyone who's actually rearranged the physical blocks to make it optimal, but at least two different people have tried keeping records of what blocks were read and pre-loading them in the optimal order, eventually coming to the conclusion that it wasn't worth it. See
this linux-kernel thread for more details.

Check our Raxco's PerfectDisk, it has a very effective boot time defragger. Diskkeeper(that's the name of the one that M$ oem's into Windows) is a POS.

Add new comment