BootVis and bithead
One of the new features Windows XP introduced was the ability for the operating system to record how fast it was at booting, then to optimise itself to boot faster. It does this by measuring the times taken to load all the device drivers and initialise them, then working out all their dependencies; by doing this big calculation, it’s possible to shuffle drivers around in the boot order to make the process complete quicker. How XP achieves this, and how often, has so far been something of a mystery. We knew that the first few boots of a fresh XP system performed such optimisation, but it wasn’t clear what happened after that. Did it ever run again automatically and, if so, how often?
Well, BootVis is a tool from Microsoft that allows you to see exactly what’s going on. When you first run BootVis, you’ll need to acquire some data, so choose File | New | Next Boot+Drivers Trace to make it collect all the information, then do a reboot and restart and wait for BootVis to automatically load the results. You get a lot of information from BootVis once it’s done an analysis run: there’s a set of horizontal time-based graphs, and each one focuses on a specific area of your system.
The first graph is an overall block diagram, giving you a bird’s-eye view of the boot process. The next graph is of CPU usage, and as you’d expect this graph clangs around between idling and 100 per cent, depending on whether it’s waiting for the disk to complete a read. Then come the Disk I/O and Disk Utilization graphs that indicate the amount of disk work that’s happening. Lastly, you get Driver Delay, indicating how much waiting time there is, and a graphical view of Process Creation, which shows when in the sequence services and applications load up.
I have a session running here in a Virtual PC (I prefer that when testing such boot-time applications, so it doesn’t matter if everything goes horribly wrong), and it shows that first the BIOS does its work, then the NT boot loader takes over and the OS goes into its proper boot sequence, starting with about two seconds of disk IO, during which the very core of XP gets loaded – the kernel, the memory management code and so forth. There’s a brief gap of around a second or so, during which the memory and basic hardware on the motherboard are checked out, then the loading sequence starts in earnest, consisting of some 12 seconds of driver loading and ten seconds of driver pre-fetching. Once this is complete, the Registry is loaded and then the video driver system. Finally, the login and server services are started up, beginning at about 20 seconds, with shell initialisation happening at around 35 seconds. (These figures are slowish because I’m running XP in a Virtual PC environment.) It demonstrates just how processor-intensive the boot sequence is and that, after the initial blast load of all the drivers and pre-fetch, disk speed doesn’t matter all that much.
There’s an option on the Trace menu to optimise the system, so I selected this and the system automatically rebooted to do some more work. With the reboot over, a dialog box came up telling me it was optimising the system: ‘Please wait while the boot files are laid out on the disk for faster system startup. This operation might take several minutes’.
Is this all worthwhile? It’s clear that BootVis is an interesting tool that tells you a lot about how your machine is actually starting up, where the bottlenecks are and so on (and it can tell you this for suspend/hibernate too). From an educational point of view, it’s definitely something worth trying, but whether it’s worth running everyday is entirely a different matter. You see, Microsoft has pulled BootVis off its website, saying that XP does all the necessary optimisations every few days and that BootVis adds nothing to the party.