Are you getting out of memory errors on your Surface? Is your Surface acting sluggish?
It could be because of some older features in Windows called Prefetch and Superfetch that are doing more harm than good on your Surface.
Prefetch and Superfetch on Surface: What are They?
Prefetch and Superfetch are both legacy features in Windows that are intended to improve system responsiveness. Without getting into too much detail the two programs do the following:
- Prefetch: Puts copies of programs you frequently use into the C:\windows\prefetch folder so they can be quickly loaded when your computer boots.
- Superfetch: Figures out programs you use frequently and pre-loads them into RAM so that they don’t have to be called from disk.
Both technologies were introduced long before the Surface was conceived and, more importantly, before solid state hard drives (SSD’s) were common.
You see, when these features were created, 99% of computers had platter type hard drives in them (HDD’s). HDD’s were much slower than modern SSD’s, especially when reading files spread all over the drive. By putting the files you needed at startup in one place, Prefetch could significantly speedup the boot process because commonly loaded files could be read one after the other from that one place.
Superfetch, on the other hand, would take advantage of the fact that RAM is much faster than a HDD, so, it would sacrifice some RAM to pre-load files or data you used often, eliminating the need to load them from the HDD. The downside was that there was less RAM available to programs but the overall gain in speed was worth it.
Prefetch and Superfetch on Surface: Do I Need Them?
The short answer is; probably not.
As I explained above, these technologies were much more relevant with magnetic platter type hard drives (which your Surface doesn’t have) – so, they may actually be causing performance problems or shortening the lifespan of your SSD.
In the case of Superfetch, RAM no longer has the huge speed advantage over SSD’s that it did with HDD’s. So, in effect, you’re “losing” (potentially) a lot of RAM for very little gain. As a result, you could be getting out of memory errors or performance slowdowns with your Surface (especially if you have a Surface 3, 2GB version).
In addition, both technologies are causing extra reads and writes to your Surface’s SSD which will shorten its lifespan over time.
Prefetch and Superfetch on Surface: How Can I Turn Them Off?
With Windows 8.1/10 both of these features are supposed to be smart enough to analyze system performance and deactivate themselves, if they’re not doing any good. However, it’s possible that they can guess wrong and be active even though they’re actually negatively impacting system performance.
Fortunately, manually turning them off is pretty easy. I have the instructions to do so below:
Prefetch
Turning off Prefetch requires a bit of registry editing but only in one spot, so it’s not too bad:
- Make sure you’re logged in with Administrator rights.
- Open Registry Editor by searching for regedit.
- Browse to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters. Find the EnablePrefetcher key (on the right) and tap or click on it.
- When the Edit window appears, change the Value Data to 1. Make sure you write down or remember what the setting was before you change it. Also, don’t change anything else.
- Tap of click OK, close the Registry Editor, and restart your Surface.
I would advise you to time how long it takes your Surface to boot before you turn this off, then again after, so you can compare the speeds. It’s possible that Prefetch is actually helping your Surface boot faster. If that turns out to be the case, you might want to turn it back on by setting the EnablePrefetcher key back to what it was before (probably 3).
Superfetch
Superfetch is even easier to disable and will mostly likely have the biggest impact on your Surface’s speed, especially if you’re getting out of memory errors:
- Make sure you’re logged in with Administrator rights.
- Search for Services to find the Services Manager in Control Panel.
- Once there, scroll down and find the Superfetch service.
- Tap or click on it to bring up the Superfetch Properties window. Once there, select the Stop button to turn off the service then set the Startup Type to Disabled.
- Tap or click OK and exit the Services Manager.
- Restart your Surface.
This should free up some RAM on your Surface and will, likely, get rid of any out of memory errors you are experiencing.
Some people have reported performance problems or seeing more out of memory errors since upgrading to Windows 10. So, if you already tried the steps in my article 10 Things to Help Fix Windows 10 Performance Issues to no avail, turning off Prefetch and/or Superfetch is the next thing you should try.
Tim