Prefetcher
Encyclopedia
The Prefetcher is a component of versions of Microsoft Windows
starting with Windows XP
. It is a component of the Memory Manager
that speeds up the Windows boot
process
, and shortens the amount of time it takes to start up programs. In Windows Vista
, SuperFetch and ReadyBoost
extend upon the prefetcher and attempt to accelerate application and boot launch times respectively by monitoring and adapting to usage patterns over periods of time and loading the majority of the files and data needed by them into memory so that they can be accessed very quickly when needed.
This feature is covered by US patent 6,633,968.
Master File Table), and recording a trace file of this activity. Future boots can then use the information recorded in this trace file to load code and data in a better fashion. The boot prefetcher will continue to watch for such activity until 30 seconds after the user's shell has started, or until 60 seconds after all services have finished initializing, or until 120 seconds after the system has booted, whichever elapses first.
Application prefetching works in a similar fashion, but is instead localized to a single application's startup. Only the first 10 seconds of activity are monitored.
The prefetcher stores its trace files in the "Prefetch" folder in the root Windows directory (typically
or Dllhost) have the name of the loaded component included in the computed hash as well; this results in different trace files being created for each component.
Task Scheduler
is the process responsible for parsing the trace data collected by the prefetcher and writing files to the prefetcher directory. As a result, the prefetcher will not operate correctly if the Task Scheduler service is not started.
An additional feature of Task Scheduler is its ability to interact with the Windows Disk Defragmenter
. Every three days, when the machine is idle, a list of files and directories that are referenced during the boot process and application startups is created. This list is stored in
at
The recommended value is 3 .
Often found on the Internet is the "/prefetch:1" application tweak, which is a valid but nonetheless generally ineffective switch. A second myth is that the user should delete the prefetch folder contents to speed up the computer. If this is done, Windows will need to re-create all the prefetch files again, thereby slowing down Windows during boot and program starts until the prefetch files are created—unless the prefetcher is disabled.
Windows maintains no more than 128 entries in the Prefetch folder.
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
starting with Windows XP
Windows XP
Windows XP is an operating system produced by Microsoft for use on personal computers, including home and business desktops, laptops and media centers. First released to computer manufacturers on August 24, 2001, it is the second most popular version of Windows, based on installed user base...
. It is a component of the Memory Manager
Memory management
Memory management is the act of managing computer memory. The essential requirement of memory management is to provide ways to dynamically allocate portions of memory to programs at their request, and freeing it for reuse when no longer needed. This is critical to the computer system.Several...
that speeds up the Windows boot
Booting
In computing, booting is a process that begins when a user turns on a computer system and prepares the computer to perform its normal operations. On modern computers, this typically involves loading and starting an operating system. The boot sequence is the initial set of operations that the...
process
Windows NT Startup Process
The Windows NT startup process is the process by which Windows NT 4.0, Windows 2000, Windows XP and Windows Server 2003 operating systems initialize...
, and shortens the amount of time it takes to start up programs. In Windows Vista
Windows Vista
Windows Vista is an operating system released in several variations developed by Microsoft for use on personal computers, including home and business desktops, laptops, tablet PCs, and media center PCs...
, SuperFetch and ReadyBoost
ReadyBoost
ReadyBoost is a disk cache component of Microsoft Windows, first introduced with Microsoft's Windows Vista in 2006 and bundled with Windows 7 in 2009...
extend upon the prefetcher and attempt to accelerate application and boot launch times respectively by monitoring and adapting to usage patterns over periods of time and loading the majority of the files and data needed by them into memory so that they can be accessed very quickly when needed.
This feature is covered by US patent 6,633,968.
Overview
When a Windows system boots, a large number of files need to be read into memory and processed. Often, this includes loading different segments of the same file at different times. As a result, a significant amount of time is spent opening and accessing files multiple times, where a single access would be more efficient. The prefetcher works by watching what code and data is accessed during the boot process (including a reading of the NTFSNTFS
NTFS is the standard file system of Windows NT, including its later versions Windows 2000, Windows XP, Windows Server 2003, Windows Server 2008, Windows Vista, and Windows 7....
Master File Table), and recording a trace file of this activity. Future boots can then use the information recorded in this trace file to load code and data in a better fashion. The boot prefetcher will continue to watch for such activity until 30 seconds after the user's shell has started, or until 60 seconds after all services have finished initializing, or until 120 seconds after the system has booted, whichever elapses first.
Application prefetching works in a similar fashion, but is instead localized to a single application's startup. Only the first 10 seconds of activity are monitored.
The prefetcher stores its trace files in the "Prefetch" folder in the root Windows directory (typically
\Windows\Prefetch
). The name of the boot trace file is always NTOSBOOT-B00DFAAD.PF
, and application trace files are a concatenation of the application's executable name, a hyphen, a hexadecimal representation of the hash of the path the file resides in, and a ".pf" extension. Applications that host other components (i.e. Microsoft Management ConsoleMicrosoft Management Console
Microsoft Management Console is a component of Windows 2000 and its successors that provides system administrators and advanced users an interface for configuring and monitoring the system.- Snap-ins and consoles :...
or Dllhost) have the name of the loaded component included in the computed hash as well; this results in different trace files being created for each component.
Task Scheduler
Task Scheduler
Task Scheduler is a component of Microsoft Windows that provides the ability to schedule the launch of programs or scripts at pre-defined times or after specified time intervals. It was first introduced in the Windows 95 Plus! pack as System Agent but was renamed to Task Scheduler in Windows 98...
is the process responsible for parsing the trace data collected by the prefetcher and writing files to the prefetcher directory. As a result, the prefetcher will not operate correctly if the Task Scheduler service is not started.
An additional feature of Task Scheduler is its ability to interact with the Windows Disk Defragmenter
Windows Disk Defragmenter
Disk Defragmenter is a utility in Microsoft Windows designed to increase access speed by rearranging files stored on a disk to occupy contiguous storage locations, a technique called defragmentation. Defragmenting a disk minimizes head travel, which reduces the time it takes to read files from and...
. Every three days, when the machine is idle, a list of files and directories that are referenced during the boot process and application startups is created. This list is stored in
Layout.ini
in the Prefetch directory, and is subsequently passed to the Disk Defragmenter, instructing it to place all the files in sequential order on the physical hard drive, which will further improve startup performance, as Windows will spend less time waiting for the hard drive's heads to move to the relevant data. Alternatively, running "Defrag.exe %systemdrive% -b" from the command line forces a defragmentation of the prefetcher files without requiring a full defragmentation.Configuration
The Prefetcher's configuration is stored in the Windows RegistryWindows registry
The Windows Registry is a hierarchical database that stores configuration settings and options on Microsoft Windows operating systems. It contains settings for low-level operating system components as well as the applications running on the platform: the kernel, device drivers, services, SAM, user...
at
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
. The EnablePrefetcher value can set to be one of the following:
- 0 = Disabled
- 1 = Application launch prefetching enabled
- 2 = Boot prefetching enabled
- 3 = Applaunch and Boot enabled (Optimal and Default).
The recommended value is 3 .
Incorrect tweaking of the prefetcher
The default prefetcher setting is to optimise the speed of boot time and application loading times. Values higher than 3 do not increase performance. (Note that 2 is the default value on Windows 2003). Changing the value to 2 will not make Windows boot faster.Often found on the Internet is the "/prefetch:1" application tweak, which is a valid but nonetheless generally ineffective switch. A second myth is that the user should delete the prefetch folder contents to speed up the computer. If this is done, Windows will need to re-create all the prefetch files again, thereby slowing down Windows during boot and program starts until the prefetch files are created—unless the prefetcher is disabled.
Windows maintains no more than 128 entries in the Prefetch folder.
See also
- List of Microsoft Windows components
- Features new to Windows XPFeatures new to Windows XPWindows XP introduced many features not found in previous versions of Windows.-Graphics:With the introduction of Windows XP, the C++ based software-only GDI+ subsystem was introduced to replace certain GDI functions...
- Windows Vista I/O technologies
- Windows ReadyBoostReadyBoostReadyBoost is a disk cache component of Microsoft Windows, first introduced with Microsoft's Windows Vista in 2006 and bundled with Windows 7 in 2009...
- readaheadReadaheadreadahead is the file prefetching technology used in the Linux operating system. It is a system call that loads a file's contents into the page cache. When a file is subsequently accessed, its contents are read from physical memory rather than from disk, which is much faster.Many distributions of...
- the equivalent LinuxLinuxLinux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
technology
External links
- The Windows Prefetcher Guide
- Prefetch or SuperFetch
- Prefetching on 42LLC/Digital Forensic Solutions
- Windows Prefetch Parser Free tool that can be run on Windows, Linux or Mac OS-X.