Back in the old days of 2010, I used to walk into my home office in the morning, hit the power button on my production system, and then head back upstairs to have breakfast. By the time I returned to the office, my system had fully booted up and was ready to go.
Then I upgraded to a solid-state drive RAID array--and now my system boots in about 30 seconds. However, not everyone is willing to spend $700 on PC's storage, so I decided to find out how much I could speed up a PC's boot time without spending a dime. After several hours of tweaking and testing, I managed to reduce the boot time of a PC from 69 seconds to 47 seconds. Here's how I did it.
The Test System
Rather than artificially creating a slow-booting system by installing a bunch of glop from the Web, I decided to use an existing system--one that I use almost daily. It's not my speedy, SSD-equipped production system, but my system for performance-testing add-in graphics cards. Since that system also serves as a backup content editing system, I've installed Adobe Master Collection 5.0 on it, along with all of the extraneous stuff Adobe likes to add to a system. Microsoft Office is another major software component.
Among its hardware components are a Core i7 965X quad-core CPU, 6GB of RAM, and a 7200-rpm Seagate 7200.11 1TB hard drive.
This setup allowed me to test real-world improvements in boot times on a system that reflected real-world usage. Over the years, I have installed numerous graphics cards on it, which also means numerous driver installs and uninstalls. Games and applications have come and gone, too. What you won't see from optimizing a gradually cluttered real-world system are insanely big improvements, as you might with some of the artificial tests that are floating around.
The PC Boot Process
When you fire up your PC, the processor performs some initial startup steps and then looks for a specific memory address in the boot loader ROM. Next, the processor starts to run code that it finds at this location, which is the system boot loader. The boot ROM enumerates all of the hardware in the system and performs a number of diagnostic tests. Then it looks for a specific location on the first storage device--probably your hard drive, assuming that the system isn't set up to boot from a network--and runs code found in that location. That's the start of the operating system load process.
For Windows, the code that your processor loads is the Windows Boot Manager. The boot manager then begins the process of loading Windows. At some point during this process, the core of the Windows operating system--the kernel--loads into memory along with some key drivers and the hardware abstraction layer. The HAL functions as the interface between the operating system and the underlying hardware. After this, the Windows Executive, a collection of essential services such as the virtual memory manager and the I/O manager, fires up and loads the Windows Registry.
The Registry contains information about what services, drivers, and applications load during boot. The Registry is actually a database that stores configuration settings, options, and key locations for both high-level applications and low-level OS services. Over time, as users install and uninstall apps, the size of the Registry can balloon, thereby increasing load times. Boot times are also affected by the loading of key services and startup applications.
This summary is by no means a detailed description of the PC boot process. Consult a detailed tutorial on the Windows boot process--such as this one--if you want to dive deeper.
In view of the PC boot process, we can explore several areas to reduce boot times:
- The System BIOS or Extensible Firmware Interface (EFI)
- The Windows Boot Manager
- System Services
- Application Services (helpers)
- Startup Programs
- Windows Registry
Let's consider each of these Windows functions individually.
Disabling Extraneous Services
Before proceeding further, I needed to measure my system's pretweak boot time. One way to do this is to create a text file containing the text "Stop the Stopwatch." Drop this into the Windows startup applications folder in C:\Users\your username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup. This allows you to time the boot process with a stopwatch and know when to stop the watch. The boot process isn't completely finished at this point, but the system will be in a usable state.
Measured by this method, my system took 69 seconds to boot--far too long. It was time to nuke some services.
First, I looked at the startup services that opened when my system booted. You can check the list for your PC by running msconfig, a built-in Windows utility. Click the Start menu, type Run, press Enter, and then type msconfig in the Run box. Click the Services tab. In the accompanying screenshot you can see that, for simplicity's sake, I ticked the checkbox next to 'Hide all Microsoft services'; nevertheless, I did plan all along to disable a few Windows services.
In addition to disabling all of the services shown in the above list, I disabled six Microsoft Windows services from starting on boot:
- Windows Media Center receiver
- Windows Media Center Scheduler service
- Microsoft Office Groove Audit Service
- Microsoft Office Diagnostic Service
- Smart Card Removal Policy
- Smart Card
Since I don't use Windows Media Center on this system, disabling the first item on the list was an easy decision. And these changes only scratch the surface. Another item that you might disable on startup is Remote Login (if you never use it). The right choices depend on your needs.
After disabling the extraneous application services and a handful of Microsoft services, I found that the system now took 68 seconds to boot--not much of an improvement. The next step was to disable a few startup applications.
Disabling Startup Applications
Msconfig's Startup tab lists applications that start on bootup. Here is the list on my test system.
Most of the listed startup applets are at least occasionally useful, but none are essential from the get-go. I can manually check for Adobe updates, let QuickTime and Acrobat start a tiny bit slower when I need them, and so on. So l just unchecked all of the applets on the Startup list.
System boot time: 57 seconds.
Now we're talking. Disabling startup applications and a few services trimmed 11 seconds off a 69-second boot time--an improvement of nearly 16 percent.
System BIOS Tweaks
The Asus P6T6 Deluxe motherboard on my test system has two ethernet connectors, but I need only one of them. The motherboard is also set up to check the optical drive to see whether it contains a bootable CD or DVD--and only after that, to try to boot off the hard drive. And finally, since I don't use my external and secondary SATA controller, I don't need a BIOS check for the Marvell discrete SATA controller. Armed with this knowledge, I entered my PC's BIOS during startup, and performed three quick operations: disabling the second ethernet port, setting up the system to boot from the hard drive first, and disabling the discrete SATA controller.
Boot time: 52 seconds
So on my system, disabling a few unused BIOS items netted a savings of 5 seconds at bootup. Not bad.
Cleaning the Registry
Does cleaning the Registry of unused or orphan database entries lead to faster boot times? A number of articles suggest that it does, but many of them base that conclusion on rather extreme testing--loading up a system with a lot of junk, and then using a Registry cleaner to remove the new additions. The PCWorld Labs has tested PC cleanup utilities in the past, and found that they slightly improve boot time (and minimally improve overall system performance, but that's another story). But how effective are they on system whose encrustation of junk occurred naturally?
I used Piriform's Ccleaner 3.12, a popular Registry and system cleaner to autoscan my system and identify items that it thought were useless.
I handled the cleanup in two steps--first having Ccleaner remove extraneous files, cookies, index files, log files, and other clutter, and then accepting Ccleaner's recommendations regarding unneeded Registry entries and cleaning those out. The first sweep with Ccleaner improved my test system's boot time by 1 second (to 51 seconds,) and the second sweep yielded another 1-second advance (to 50 seconds).
So Ccleaner's cleanup work was good for 2 seconds at bootup-- a modest upgrade. Still, cleaning extraneous garbage from your Registry and your system can have other positive effects, such as reducing the Registry's memory footprint and regaining disk space. Both of those can improve system responsiveness.
I now had one more corrective measure to try: setting the boot timeout delay.
Changing Boot Timeout
You might expect changing the boot timeout not to have much impact, since all it does is specify how long Windows may display an automatic menu, such as the Startup Repair menu. But it turns out that changing the boot timeout does affect boot performance.
The default boot timeout setting on my test PC was 30 seconds; but 10 seconds should give users sufficient time to respond to any menus that Windows may present.
The boot time after I made this change: 47 seconds.
This was a repeatable test. It's unclear to me why this alteration has such a relatively large impact, but 3 seconds is 3 seconds.
You can dig deeper into each step of the process I've outlined here to reduce boot times further. But with a modest amount of effort, the boot time on my fairly typical system dropped from 69 seconds to 47 seconds, a reduction of more than 30 percent.
Another option, of course, is to throw money at the problem, depending on the system you're starting with. In my speedy production system, the SSD RAID array boots the PC in less than 30 seconds--without the aid of any of the tweaks I've discussed here. Alternatively, if you have a Sandy Bridge PC running Intel's Z68 chipset, you can add a more modest (64GB or less) SSD drive and enable SSD caching of the drive. That can significantly improve boot times and reduce the load time that commonly used applications require.
But even ordinary systems can see substantial decreases in boot time. The key is to optimize each step of the boot process, one at a time. You don't need to do them all in one sitting, either. And be sure to recheck your system's boot time every couple of months, because installing new applications may make it get longer again.