Improving "Cold Boot" Time for System Manufacturers

Updated: December 4, 2001
*

Fast-Boot Version 2.0

Customer research has shown that one of the most frequently requested features that users want from their PCs is fast system startup, whether from cold boot or when resuming from hibernation or any other sleep state.

The Microsoft Windows Millennium Edition (Windows Me) operating system has taken bold steps in making fast-booting PCs a reality. This article provides guidelines for system manufacturers who want to improve boot time for new PCs. This article also briefly summarizes the changes in Windows Me that promote fast system startup.

Improving Boot Time

This article focuses on "cold boot" time, which is the time it takes to power on a PC (after a full shutdown) to when the user can start using the system to run programs.

To investigate how to make PCs start faster, the examination of cold boot time is divided into three phases:

BIOS POST - the time for the power-on self test (POST)

Pre-Logon - the time from BIOS POST handoff to the Windows Logon screen

Post-Logon - the time from closing the Logon screen to a usable Start menu

The sum of the three phases is the total cold boot time for a PC.

This section presents tips for improving boot time for each of these phases.

Improving BIOS POST

Methods for improving BIOS POST depend on the BIOS core the system uses. Work closely with your BIOS vendors to minimize BIOS POST time. Here are some general tips that may help you improve in this area:

Do not clear memory if there's no memory error detection.
Windows Me and Windows 2000 do not expect memory to be cleared before loading the operating system on PCs shipped without memory error detection or correction hardware (ECC/parity).

Remove advertisements from expansion ROMs.
(This is commonly an issue with video BIOS. We have also seen this with network adapters.)

Use smaller centered OEM logo screens during POST rather than large bitmaps. Testing has shown an improvement of up to 2 seconds in POST related to the size of the OEM logo bitmap.

If the PC does not support ATA expansion past a single hard drive and CD/DVD, configure the BIOS to not look for other devices on the primary and secondary ATA channels.

Connect the hard disk and CD-ROM/DVD to the primary ATA controller as Device 0 and Device 1.
Testing has shown that doing this does not degrade system/multimedia performance on systems with 64 MB of RAM or more.

Program ATA transfers for the maximum rate.
Many BIOSes focus only on loading the operating system, and then the operating system driver enables maximum transfer mode/DMA after it loads. Several seconds can be saved if the BIOS enables higher transfer rates. This is particularly important when resuming from hibernate and during the early portions of a cold boot.

Use a legacy-free BIOS.

This will eliminate unnecessary delays such as ISA Plug and Play.

Use Simple Boot Flag so that the boot order begins with hard drive for the normal boot scenario. On systems with CD-ROM boot order set as first on normal boot, if a disc is in the tray, the CD-ROM must be spun up to determine whether the CD in the tray is bootable. This can delay boot by several seconds.

Windows Me has full support for the Simple Boot Flag, which can help improve BIOS POST time for both cold boot and resume from hibernate. By using Simple Boot Flag, time-consuming configuration and test procedures in the BIOS can be isolated to a failed boot path. The normal boot path can eliminate these processes, dramatically speeding up BIOS POST.

For cold boot, Windows clears the Simple Boot flag during the VMM_INIT portion of boot.

For a resume from hibernate, Windows Me clears the Simple Boot flag after reading the hibernate file but before the display is turned back on (Implemented after Windows Me Beta 3).

For information about Simple Boot Flag, see http://www.microsoft.com/whdc/resources/respec/specs/simp_bios.mspx

Improving Pre-Logon Boot Time

Use the PNP Enumeration tool to measure device enumeration and driver load times. (See "PNP Enumeration Tool and Boot Time Measurement" at the end of this article.)

See Table 1 for guidelines in choosing fast hardware. These are actual times measured in the Windows Me performance lab on real hardware. Use these numbers as a starting point as you work with your suppliers to evaluate new solutions.

This chart is a guide, not a definitive set of numbers for good and poor hardware. The best way to determine the quality of driver load times for a system is to compare that system's device/driver times to that of other similar devices on the market.

You can use the PNP Enumeration tool to isolate slow devices that may be improved and also to pick the faster ones.

Table 1. Boot Time Reference for Hardware Components

HardwareGood (seconds)Poor (seconds)

USB HUB

0.3

24.0

Display

0.01

1.4

Network adapter

0.2

1.5

Monitor

~0

4.0

ATA

0.3

1.6

Fix drivers to load faster

We have seen driver improvements of 10+ seconds in boot time while keeping the same hardware. Drivers can load fast!

For OEMs: Demand fast-boot drivers from your IHVs.

For IHVs: Supply only fast-boot drivers to your OEMs and to end users. This includes driver updates offered on the web.

Make sure DMA is turned on for the hard disk. This can improve boot performance by as much as 2 seconds.

Defrag the system images before shipping them to users.

Ensure the BIOS is programmed for maximum supported ATA transfer rates. We have seen some BIOSes doing 16-bit transfers rather than 32-bit transfers and using PIO Mode 0 rather than higher modes that yield better performance. Supporting maximum transfer rates will greatly improve resume-from-hibernate performance in reading the hibernate file.

Choose hard drives for fast spin-up. There is a delicate tradeoff to make for spindle rate versus spin-up rate. The higher the spindle rate, typically the slower the spin-up. However, within a given spindle rate, screen for the best spin-up speed. Higher spin-up rates may slow BIOS POST while delivering far faster Pre-Logon and Post-Logon times. Using a 7200 RPM hard disk can improve overall boot time dramatically across all three phases.

fast-boot1.GIF
Click to view full-size image.

Improving Post-Logon Boot Time

The number of programs pre-loaded on the system will dramatically affect Post-Logon time. Having several programs loading at boot time slows down Post-Logon times. Tips for improving Post-Logon time:

Use as much built-in Windows functionality as possible. For example, use the Windows built-in Task Scheduler for reminders, anti-virus programs, scheduled anti-virus pattern file updates, and so on.

Don't add extra schedulers to the system.

Use standard HID key mappings on keyboards. Adding extra keyboard hook programs have been shown to slow boot time by as much as 4 seconds while consuming as much as 5% of USER resources. Windows Me has built-in support for a large variety of "special" keyboard buttons for launching web browsers, volume control, CD controls, and so on. (See http://www.microsoft.com/whdc/device/input/default.mspx)

Leverage Windows Me PC-Health support services such as Auto-Update, Help Center, and System Restore. These services have been tuned to minimize effect on boot and working set.

Only load what is critical for the end user. Consider delayed loading rather than loading everything when the system starts.

Make sure that all items in the Run registry key point to valid executable files on the disk. We've seen pre-load configurations that attempt to detect all cards that might optionally ship with a PC. This leaves dangling registry keys that delay boot by searching and then failing to find files because the related hardware was not shipped on the system.

Run items at lower thread priority to minimize the load on the system.

Defrag images before shipping them to users.

By leveraging built-in Windows services such as the Task Scheduler and built-in HID support, and by eliminating unnecessary programs from Post-Log, you can improve this part of boot and create a better experience for your customers.

Improving Resume from Hibernate Time

The previous sections focused on cold-boot time, but improving BIOS POST time and driver load times will also help the system's resume-from-hibernate time.

Windows performs similar Plug and Play enumeration processes when resuming from S4-OS (hibernate) state as it performs during cold boot. Any design work you undertake to improve cold boot will also help a system's resume-from-hibernate times.

Implementing a fast BIOS POST improves both cold boot and hibernate resume times.

Implementing a fast hard disk (spin-up and throughput) improves hibernate resume time.

Implementing BIOS programming for highest speed ATA transfers improves hibernate resume time.

Implementing fast loading drivers improves resume times, because of the Plug and Play enumeration performed by Windows when resuming from hibernate.

Windows Me Boot Time Improvements

Microsoft has made the following changes in Windows Me to improve boot time:

No real mode processing. Windows Me does not process Autoexec.bat or Config.sys during the boot process.

Some PCs load real-mode CD-ROM and sound card drivers that expend as much as 20 seconds in boot time. Such drivers are not needed on systems running Windows Me.

Improved registry structure:

The registry is now broken up into 3 files (User.dat, System.dat, Classes.dat) to make loading the registry more efficient. Windows Me loads only the portions of the registry that are required during boot.

Windows Me loads the registry only once during the boot process.

Improved Plug and Play enumeration. Windows Me is less serialized than Windows 98 when detecting devices during the boot process.

Merged real mode drivers in Io.sys. Services such as HIMEM and SMARTDRV, which are separate files in Windows 98 that must be loaded during boot, are now built into the Windows Me Io.sys file. This improves read performance of the hard disk during boot. Io.sys is compressed, which reduces disk size and makes it faster to load.

Task Scheduler modified as a background system service. Windows 98 included a system tray icon for switching off this service. Windows Me provides the scheduler as a system service, which can be used to schedule important tasks for the user (maintenance, anti-virus pattern reminders, and so on). Windows Me eliminates the tray icon for the Task Scheduler, making it less visible to the end user and therefore more likely to remain running.

Media sense and TCP/IP. Technology in the Windows Me TCP/IP stack (also available on Windows 2000) allows for faster boot times in network scenarios when the DHCP server is unavailable or when a network cable isn't plugged into the network adapter. In Windows 95/98, boot time could increase up to 24 seconds while seeking a DHCP server. In Windows Me with media-sense aware drivers, boot time is improved dramatically.

Measuring Boot Time

This section presents tips for measuring boot time.

Preparing a System for Boot Timing

To prepare a PC for measuring boot time, perform the following tasks:

Ensure the complete pre-loaded configuration is on the system.

Set the display to 800 x 600 x 16 bpp.

Set all actions for power schemes in power management to Never:

1.

In Control Panel, click the Power Options icon.

2.

Set Power Schemes to Always On.

3.

Set System Standby to Never.

4.

Set Turn Off Monitor to Never.

5.

Set Turn Off Hard Disks to Never.

Configure network setup:

1.

In Control Panel, click the Network icon.

2.

Select Family Logon for the Primary Network Logon field.

3.

Make sure the logon name has a password of at least 1 character. This will ensure a Logon dialog appears.

Tip: Use a network logon when measuring boot times even if your system doesn't ship with a Logon dialog enabled, because this configuration setting makes it much easier to isolate boot issues to investigate differences.

Preparing to Measure Boot Time

Before gathering boot data, perform the following tasks:

Turn on the Windows F8 boot menu:

Start Msconfig.exe.

Click the Advanced button.

Check the Enable Startup Menu box.

Click OK twice and reboot the PC.

Create batch file for Post-Logon times:

From the Start menu, click Run and type:
Notepad c:\timing.bat

Type the following contents for the file: Echo stop timing

Save the file and exit Notepad.

Add Timing.bat to the Run key in the system registry:

From the Start menu, click Run and type:
regedit

In Regedit, go to this Registry key: HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Windows\ CurrentVersion\ Run

From the Regedit menu, click Edit > New > String Value and type the following in the Value Data field:
ZZBOOT

From the Regedit menu, click Edit > New >String Value and type the following in the Value Data field:
c:\timing.bat

Click OK, exit the Registry Editor, and reboot the PC.

Note: The Run key is processed in the order in which items are added to it. Please make sure the ZZBOOT entry is the last item added before Timings.bat to ensure that all items in the pre-load configuration are being measured.

Measuring the Three Phases of Boot

To measure BIOS POST time:

1.

Turn the PC power on while starting the stop watch.

2.

Hold down the CTRL key while the BIOS is POSTing.

3.

When you see the Windows F8 Boot menu, press the stop watch button to stop timing.

4.

Record the time on the stop watch. This is the system's BIOS POST time.

To measure Pre-Logon time:

1.

From the Boot menu, press Enter on the first selection (Normal) while starting the stop watch.

2.

When the Logon box appears on the screen, press the stop watch button to stop timing.

3.

Record the time on the stop watch. This is the system's Pre-Logon time.

4.

Allow system to settle for 15 seconds.

This will eliminate any inconsistencies because of RunServices items processing in the middle of Post-Logon timings, which could skew results.

To measure Post-Logon time:

1.

In the Logon dialog, type the password.

2.

Press Enter while at same time starting the stop watch.

3.

When the window for C:\Timing.bat appears on the screen, press the stop watch button to stop timing.

4.

Record the time on the stop watch. This is the system's Post-Logon time.

Deviations in Boot Times

The following items have been known to cause deviations in measuring boot times:

Monitors: Monitors have been observed to effect BIOS POST and Pre-Logon time.

ATA devices: ATA configuration has been observed to affect BIOS POST and Pre-Logon time.

Network environment: Testing on systems that include a network adapter should be done on a small private network. Network traffic can cause large deviations in measuring boot and resume from hibernate times.

Startup items: Lots of items loaded from the Run key and Startup group have been observed to cause very large deviations in Post-Logon times.

Common Cold Boot Measurement Questions

Why isn't BIOS POST measured to the "beep"?

Many BIOSes beep before handing off to the operating system. Using the Windows Me F8 Boot menu as the timing point ensures that the full BIOS POST time is being measured.

Why isn't Post-Logon boot time measured to when the hourglass changes to an arrow or to when the hard disk settles?

Windows Me changes the way the shell loads so that the user can start using the PC before all items have loaded during boot. In Windows 98, you needed to wait for every item in the Run key and the Startup group to fully execute before the PC was usable. In Windows Me, you can start using the PC before all these programs have loaded and the hard disk has settled.

PNP Enumeration Tool and Boot Time Measurement

The PNP Enumeration tool is a great tool to use to screen hardware and drivers. This tool measures the Plug and Play portion of the boot process and calls out the devices and drivers that take the longest to load. The Beta Preview version of this tool is available for download on this page.

With the PNP Enumeration tool, there are various messages a devnode can listen to:

(C) means Config Handler (driver)

(E) means enumerator handler (an enumerator processing a message for a child)

(NEWDEVNODE) is the message sent to the devloader during Plug and Play enumeration

When looking at the data, pay attention to the devices that took the longest to start. Compare times to other devices in the same class. There is no rule for what is a fast device versus a slow one, but by comparing you can see what is achievable. It is important for vendors to be encouraged to improve driver load time as much as possible.

Download the self-extracting zip file Download the PNP Enumeration Tool

(Note: Beta Preview Version; 116 KB self-extracting zip file; file date: April 28, 2000)


How would you rate the usefulness of this content?
Poor Outstanding