Improve Windows Performance By Enabling Superefetch

Nowadays, SSD technology becomes more widespread, and more and more computers are shipped with an SSD disk. But their price is still high, and not everyone can afford a 500 Gb SSD disk, at 160$, in replacement of his good old mechanical disk (HDD). The HDD still has some beautiful days ahead…

Do you know what device in your computer makes your system heavy and slow?
It’s the disk!

Why? Because all the data needed by the OS and programs are stored in the disk. And whenever you need to read a file or start an application, this operation can take several seconds because of your slow 5200 rpm hard disk! It’s then worthless to have the speediest CPU in the market or a big amount of RAM; you will always have a bottleneck.

So how to ensure that your Windows is set up properly to overcome the performance limits of your HDD?

Windows offer to deal with the poor HDD performance two mechanisms; The Superfetch and the ReadyBoot.

The main problem with the mechanical disks during a system boot or an application startup is that the data or code are brought in from one part of a file, then maybe from a distant part of the same file. Perhaps from a directory, then from a different file …etc. This jumping around slows down each access considerably. The disk seeks times are a dominant factor in slowing boot and application startup times.

So the superfetch monitors data and code accessed by application startup, then cache this information in the %SystemRoot%\Prefetch folder so that the next time these data are loaded quickly during the application startup. By prefetching batches of pages all at once, the system achieves a more sensible ordering of access without excessive backtracking, thus improving the overall time for system and application startup.

For the system boot, another mechanism called ReadyBoot is used. ReadyBoot analyzes file trace information from the five previous boots and identifies which files were accessed and where they are located on disk then stores this information in %SystemRoot%\Prefetch\Readyboot. This way the I/O operations are optimized by creating large and efficient I/O reads and storing the data in RAM; so that when system components require these data, it’s serviced through the RAM.

I wrote this article after one of our users has experienced poor performance on his Laptop. It was a Windows 10 HP ProBook, with I7 CPU, 8 Gb RAM, and 1 To 5400 rpm HDD. He noticed slowness in the Windows boot, and his Excel application became unresponsive when loading or working on some files!

I took a boot trace with Windows Performance Recorder and found that the boot time was about 175 seconds. And in the Disk usage graph, you can notice a high disk activity! So at first glance, I’ve deduced that the problem is disk-bound. I was reinforced in my analysis by the non-presence of readyboot graph! This means that the ReadyBoot and Superfetch mechanisms were not enabled!

My next step was enabling the Superfetch service, which hosts the two mechanisms after rebooting the system six times, to allow the ReadyBoot to prefetch and cache the necessary data.

The boot time decreased to 77 seconds. A gain of 98s.

You can enable or disable Prefetching for boot and application startup by editing this registry key value HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\EnablePrefetcher.

  •  Set it to 0 to disable prefetching altogether;
  • Set it to 1 to enable prefetching applications only;
  • 2 for prefetching on boot only;
  • 3 for both boot and applications.

So by enabling the Superfetch and ReadyBoot mechanisms you can improve Windows Performance even when the hardware plays against you.

Share this article

Leave a Reply