SuperFetch is technology by Microsoft integrated into operating systems after Windows Vista. It has two purposes; it decreases the time required to boot and makes sure that the application you open frequently loads more efficiently. It also takes timing into effect and analyzes your usage patterns to adjust itself.
SuperFetch pre-loads most of your used applications into the main memory not only based on your usage patterns but also when you use them. For example, if you have the same routine each morning (Chrome, Weather, News), SuperFetch will pre-load these applications into the memory each morning. If your evening routine is different, it will have a different loading routine for the evening.
Sometimes SuperFetch poses a problem to the users when it consumes a lot of resources (Disk/CPU usage) which makes the computer laggy and causes delays. There are a number of factors involved with high disk usage which is covered in a more comprehensive article at https://appuals.com/high-cpu-usage-by-service-host-local-system-network-restricted/. Here we will focus on how to disable SuperFetch and check if the problem goes away.
Before we disable SuperFetch from services, we need to change the registry value of MSISupported for your hard drive. You can always revert the changes if this doesn’t fix anything.
- Press Windows + R to launch the Run application. Type “devmgmt.msc” in the dialogue box and press Enter. This should launch the device manager.
- Once in the device manager, expand the category of “IDE ATA/ARAPI controllers”. Here you will see “Standard SATA AHCI Controller”. Right-click it and select Properties.
- Navigate to the Driver tab and click on Driver Details.
- If you see “storahci.sys” stored in a path of System32, it confirms that your computer is running the inbox driver. Proceed to the next step.
- Close the Driver File details and navigate to the Details tab. From the drop-down select “Device instance path”.
- Right-click on the value and select “Copy”. Save it on some Notepad at an accessible location.
- Press Windows +R to launch the Run application and type “regedit”. This will launch the Registry Editor.
Registry Editor Disclaimer: Make all the changes at your own risk. Don’t change registry values you have no knowledge about. Appuals will not be responsible in any case.
- Once in the registry editor, navigate to the following file path:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\<AHCI Controller>\<Random Number>\Device Parameters\Interrupt Management\MessageSignaledInterruptProperties
Here the <AHCI controller> is the string you copied to your notepad and the <Random Number> varies computer to computer.
- Double-click on the entry of “MSIsupported” key and change its value from “1” to “0”. Press OK to save changes and reboot your computer.
- Press Windows + R to launch the Run application and type “services.msc” in the dialogue box. This will launch all the services on your computer.
- Locate “Superfetch” from the list of services. Double-click to open its properties.
- Once the properties are opened, click “Stop” underneath Service status. Then click on Startup type and select Disabled from the list of options available. Press Ok to save changes and reboot your computer.
- Press Windows + R, type “regedit” in the dialogue box and press Enter. This will launch the Registry Editor.
- Once in the Registry Editor, navigate to the following file path:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
- On the right side, you will find a key named “EnablePrefetcher”. Double-click it to open its Properties. Change the value from “3” to “0”. Press Ok to save changes and exit. Reboot your computer and check if the problem gets fixed.
The possible values for EnablePrefetcher are:
- 0 – Disable Prefetcher
- 1 – Application launch Prefetching enabled
- 2 – Boot Prefetching enabled
- 3 – Application launch and Boot Prefetching enabled
You can also incidentally change the values of EnableSuperfetcher right underneath the key we just amended.
The possible values for EnableSuperfetcher are:
- 0 – Disable Superfetch
- 1 – Enable Superfetch for boot files only
- 2 – Enable Superfetch for applications only
- 3 – Enable Superfetch for both boot files and applications
It is recommended that you set the value as “0” to disable the Superfetch completely so we can check if the problem gets fixed.