Improving Disk Performance in Vista

9/5/2010 9:32:02 AM

Windows Vista has several features that affect how disks are used. These include:

  • Windows ReadyBoost Boosts system performance by using USB flash devices as additional sources for caching

  • Windows ReadyDrive Boosts system performance on mobile computers equipped with hybrid drives

  • Windows SuperFetch Boosts system performance using a modified memory management algorithm

Each of these features is discussed in the sections that follow.

Understanding and Using Windows ReadyBoost

A computer's disk drives aren't just used for reading and writing application data and user documents. The operating system makes extensive use of a computer's disk drives for paging files and system cache. Because it's significantly slower to read from and write to a disk than it is to read from and write to physical memory (RAM), this can cause a bottleneck that degrades performance. Windows Vista introduces Windows ReadyBoost as a way to reduce the performance impact related to reading and writing the system cache.

With Windows ReadyBoost, USB flash devices with sufficiently fast memory are used to extend the disk caching capabilities of the computer's main memory. Using flash devices for caching allows Windows Vista to make random reads faster by caching data on the USB flash device instead of a disk drive. Because this caching is applied to all disk content, not just the page file or system dynamic-link libraries (DLLs), the computer's overall performance is boosted because flash devices can be read up to 10 times faster than physical disk drives.

USB flash devices that can be used with Windows ReadyBoost include USB 2.0 flash drives, Secure Digital (SD) cards, and CompactFlash cards. These devices must have sufficiently fast flash memory and be at least 512 MB or larger in size. If the flash device has both slow and fast flash memory, only the fast flash memory portion will be used for boosting performance. Windows Vista can use an amount of flash memory equal to twice the amount of physical memory (RAM) on the computer.

Memory on USB flash devices is primarily used for random input/output (I/O), because most flash devices are slower than a disk drive for sequential I/O. Windows ReadyBoost maximizes performance by automatically passing large, sequential read requests to the computer's disk drive for servicing. To allow a USB flash device to be removed at any time, all data writes are made to the hard disk before being copied to the flash device. This means all data stored on the flash device is duplicated on the hard disk and there is no potential for data loss when removing the flash device. Additionally, because the flash device's memory may contain sensitive information, Windows ReadyBoost encrypts the data so it can only be used with the computer on which it was originally written.

Enabling ReadyBoost

With Windows ReadyBoost, USB flash devices with sufficiently fast flash memory can be used as additional sources of system cache. The following steps detail how Windows ReadyBoost works the first time you use a USB flash device with a computer:

  1. When you insert a USB flash device into a USB 2.0 or higher port, Windows Vista analyzes the speed of the flash memory on the device. If the flash memory performs at a sufficiently high speed, the computer's physical memory can be extended to the USB flash device. In most cases, you'll want the flash memory to be at least as fast as the computer's bus speed.

  2. The AutoPlay dialog box, shown in Figure 1, should be displayed automatically. If you want the device to always be used with Windows ReadyBoost when inserted, select the Always Do This check box. Because you've selected the Always Do This option, the AutoPlay dialog box will not be displayed the next time you insert the device (unless you change the AutoPlay defaults in Control Panel).

    Image from book
    Figure 1: Select the Speed Up My System Using Windows ReadyBoost option.

  3. When you click Speed Up My System Using Windows ReadyBoost, Windows Vista extends the computer's physical memory to the device. The default configuration enables Windows ReadyBoost to reserve all available space on the device for boosting system speed.


Windows Vista can use an amount of flash memory equal to twice the amount of physical memory (RAM) on the computer. If a device has both fast and slow flash memory, Windows Vista only uses the fast portion of the memory.

To use Windows ReadyBoost with a USB flash device that you either already inserted or that you previously declined to use with Windows ReadyBoost, follow these steps:

  1. Click Start and then click Computer.

  2. Right-click the USB flash device in the Devices With Removable Storage list and then choose Properties.

  3. On the ReadyBoost tab, select Use This Device and then click OK.

For USB flash devices that do not support ReadyBoost, you cannot enable the device. The only option you'll have is to stop retesting the device when you plug it in. The Stop Retesting This Device When I Plug It In option is selected by default.

Configuring ReadyBoost

Windows ReadyBoost can be used in a variety of configurations. You do not have to configure the computer to use all available space on the USB flash device. You can also configure a specific amount of space to reserve. To do this, follow these steps:

  1. Click Start and then click Computer.

  2. Right-click the USB flash device in the Devices With Removable Storage list and then choose Properties.

  3. On the ReadyBoost tab, use the Space To Reserve For System Speed slider or combo box to set the amount of space to use with ReadyBoost. If you reserve less than the total amount of space available, the free space can be used for files and data.

  4. Click OK.

Ejecting a USB Flash Device That Uses ReadyBoost

You can safely remove a USB flash device that uses ReadyBoost at any time without losing data or negatively impacting the system. However, when the device is removed, the system performance returns to its normal level—the performance level experienced without the device. To remove the device, follow these steps:

  1. Open Windows Explorer or another Explorer view, such as Computer.

  2. Right-click the device and then select Eject or Safely Remove.

Understanding and Using Windows ReadyDrive

Windows ReadyDrive improves performance on mobile computers equipped with hybrid drives. A hybrid drive is a drive that uses both flash RAM and a physical drive for storage. Because flash RAM is much faster than a physical disk, mobile computers running Windows Vista write data and changes to data to the flash memory first and periodically sync these writes and changes to the physical disk. This approach reduces the spinning of the physical drive and thus saves battery power.

The flash RAM on hybrid drives can be used to provide faster startup and resume from sleep or hibernation. In this case, the information needed for starting or resuming the operating system is written to the flash RAM prior to shutting down, entering sleep, or going into hibernation. When you start or wake the computer, this information is read from the flash RAM.

You do not need to enable ReadyDrive. ReadyDrive is enabled for use automatically on mobile computers with hybrid drives.

Understanding and Using Windows SuperFetch

Windows Vista improves performance and responsiveness by changing the way user processes and background processes are used. In Windows XP, user processes and background processes have the same memory use prioritization: User processes and background processes are both loaded into memory as they are used. Because there is no prioritization, there often is contention for memory, and there are often performance lags as well because after background processes run, they remain resident in memory. Therefore, data for user applications and processes must be loaded into memory when they are requested. Windows Vista corrects this issue by ensuring that background processes are unloaded after they run and when data for user processes is reloading into memory.

In Windows XP, user processes and background processes have the same I/O priority, which often results in conflict and poor read/write performance. Windows Vista corrects this by implementing high priority I/O and low priority I/O queues. High priority I/O is used for user process and application reads and writes to physical drives. Low priority I/O is used for background process reads and writes to physical drives.


With Windows Vista, many services and routine housekeeping tasks run as background processes. For example, on Windows Vista, Disk Defragmenter is scheduled to run automatically to periodically defragment disks. When Disk Defragmenter runs, it runs as a background process and uses low priority I/O.

The key feature that makes memory and I/O prioritization work is Windows Super-Fetch. Windows SuperFetch improves system performance using a modified memory management algorithm. Unlike the memory management algorithm in Windows XP and earlier versions of Windows, SuperFetch optimizes memory usage based on the way the current user is using the computer. SuperFetch does this by performing the following tasks:

  • Differentiating between user applications and background services running on the computer SuperFetch makes the computer more responsive to user requests by prioritizing the current user's processes over background tasks. Because user processes always have priority over background tasks, background tasks do not take up all the processor time and the system remains responsive to user requests.

  • Optimizing memory for users after running background tasks Housekeeping tasks on Windows Vista make better use of process idle time than earlier versions of Windows do. More system and maintenance tasks, such as Disk Defragmenter and Disk Backup, run during idle time. When the computer is idle, background processes run as they normally would. However, when background processes end, SuperFetch repopulates memory to the state it was in prior to running the background processes. This ensures memory is optimized for user processes and the computer is responsive to user requests.

  • Tracking the most frequently-used applications and anticipating user needs SuperFetch keeps track of which applications users run most frequently and also tracks when those applications typically are used. SuperFetch then uses the tracking information to preload the application and ready it for use when it expects that the user will need the application. This ensures faster startup for applications and faster user switching over time.

  • Taking advantage of Windows Vista's low priority I/O designation SuperFetch takes advantage of Windows Vista's high priority I/O and low priority I/O queues to improve read/write times for user processes and improve a computer's overall responsiveness. When multiple processes are competing for I/O, high priority processes always get more I/O time than low priority processes do. As a result, user processes and applications have better performance, and there is less contention for I/O time when both user processes and background processes are running.

As an administrator, you should understand not only how SuperFetch works but also the way it is configured. All versions of Windows Vista support SuperFetch. Some basic characteristics of SuperFetch follow.

  • Runs as a service named SuperFetch. This service runs automatically at startup and logs on using the Local System account.

  • Uses the SvcHost.exe executable, running in a network restricted mode. This means SuperFetch can only access the local computer and doesn't have access to any networks to which the computer might be connected.

  • Depends on the Filter Manager component for proper operations. Filter Manager provides file information and file system information needed by SuperFetch, and it is installed automatically with the operating system.

  • Writes prefetch data to the %SystemRoot%\prefetch folder. The prefetch data is used to quickly start applications. Within the prefetch folder, you'll also find several database files used to track application usage history and to speed up application performance. Application faults are also tracked in a database history file.

  •  Working with Basic and Dynamic Disks
  •  Working with Disks, Partitions, and Volumes in Vista
  •  Partitioning Disks and Preparing Them for Use in Vista
  •  Moving a Dynamic Disk to a New System
  •  Troubleshooting Common Disk Problems
  •  Managing Offline Files in Vista
  •  Configuring Disk Quotas
  •  Installing Networking Components in Vista
  •  Configuring Local Area Connections
  •  Managing Local Area Connections
  •  Troubleshooting and Testing Network Settings
  •  Detecting and Resolving Windows Vista Errors
  •  Scheduling Maintenance Tasks in Vista
  •  Backing Up and Recovering a Computer with Vista
  •  Troubleshooting Startup and Shutdown
  •  How an Access Control List Is Used
  •  Silverlight Tools: XML Editors
    Top 10
    Customizing Windows 7’s Desktop (part 3) - Getting Around the Taskbar
    Developing an SEO-Friendly Website: Content Delivery and Search Spider Control (part 1)
    Mobile Application Security - BlackBerry Security - Permissions and User Controls (part 1) - RIM Controlled APIs
    Windows Server 2008: Improvements for Thin Client Remote Desktop Services
    Microsoft Content Management Server Development : Managing Channels and Postings with the PAPI - Moving Postings
    Windows Phone 7 Development : Push Notifications - Implementing Cloud Service to Track Push Notifications
    Windows Server 2008 : DHCP/WINS/Domain Controllers - Exploring Advanced DHCP Concepts
    Managing the Cache
    Introducing Silverlight 2
    Inheriting History: The Olympus OM-D is Born
    Most View
    ASUS O!Play Mini Plus - Play everything
    100 Windows Speed-Up Tips (Part 7) - Five ways Jump Lists can save your time
    SQL Server 2008 : Using Advanced Functionality with DML - Introduction
    iPhone Application Development : Using Switches, Segmented Controls, and Web Views (part 3)
    Outlining AD DS Changes in Windows Server 2008 R2 (part 2) - Implementing Multiple Password Policies per Domain
    Securing Wireless Networks in Windows Vista
    Nokia Teams Up With Windows Phone
    Windows 7: Using Windows Live Mail (part 1) - Setting Up Windows Live Mail and Configuring Email Accounts
    Hashing Algorithms: Extending the .NET Framework (part 1)
    Installing Exchange Server 2010 into an existing Exchange Server 2007 environment (part 3) - Configure Exchange Web Services
    A brief history of transforming robots (Part 1)
    iPhone 3D Programming : Anti-Aliasing Tricks with Offscreen FBOs (part 1) - A Super Simple Sample App for Supersampling
    Joomla! Blogging and RSS Feeds : Using separate blog components
    Windows Phone Application Platform
    Managing Exchange Server 2010 : The Exchange Management Console
    Programming Microsoft SQL Server 2005 : CLR Stored Procedures and Server-Side Data Access
    Clustered Indexes in SQL Server 2008
    Windows Server 2008: IPv6 Introduction (part 2) - IPv6 Transition Technologies & The ISATAP Tunneling Protocol
    Access media remotely : Step-by-step access your media remotely (part 1)
    Microsoft XNA Game Studio 3.0 : Displaying Images - Using Resources in a Game (part 2) - Positioning Your Game Sprite on the Screen