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.
Next: Disabling Startup Applications