Subscribe to How-To Geek

Recommended: Click Here to Run a Free Scan for Common PC Errors   [Sponsored Link]

Change SuperFetch to Only Cache System Boot Files in Vista

After writing the article last week about disabling SuperFetch, my good friend Daniel Spiewak commented that SuperFetch "loads the wrong thing more often than not", which reminded me of a registry tweak… You can tell Windows to only cache the boot processes instead of everything.

I've not personally verified that this tweak really changes anything with regards to performance, so just like disabling SuperFetch you'll have to check it out for yourself. We're just trying to keep you informed.

Manual Registry Tweak

Open regedit.exe through the start menu search or run box and browse down to the following key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
   Session Manager\Memory Management\PrefetchParameters

enableprefetcher.png

Find the EnablePrefetcher key on the right-hand pane, and change the value to one of these:

  • Disable Caching: 0
  • Cache Applications Only: 1
  • Cache Boot Files Only: 2
  • Cache Everything (default): 3

You'll have to restart your computer before this takes any effect. You could consider clearing out the \Windows\Prefetch folder after making this change to start with a fresh cache, but keep in mind that the next boot will probably be slower since Windows will have to cache everything again.

The Geek is the founder of How-To Geek and a geek enthusiast. When he's not coming up with great how-to articles, he's probably writing at his personal blog. This article was written on 02/1/08 and tagged with: Windows Vista, Vista Tips & Tweaks

Comments (12)

  1. InDiSent

    Has anyone verified if this helps in any way?

  2. Gary

    How did Daniel determine that SuperFetch "loads the wrong thing more often than not".

    I swear by SF. It makes my programs startup a lot faster then without it. As far as all the disk activity due to preloading at startup time it doesn't slow anything done.

    I can't see why anyone would want to disable it? Even if it does load the wrong programs you will have to read it from disk just as if you turned it off.

  3. The Geek

    Gary,

    That was Daniel's experience… He can comment better (and probably will) on his experience, but keep in mind that SuperFetch performance can vary greatly for different users, since we all use our computers differently.

    For instance, with SuperFetch enabled Windows will grind the hard drive for quite a while after you login. If you frequently cold boot your computer and then want to immediately have unfettered access to your desktop, disabling it might help… or not. The same most likely holds true for people that have a very large number of applications they launch on a regular basis.

    In any event, it's best to test it out for yourself.

  4. Daniel Spiewak

    I have a large number of applications that I use on a daily basis, though few of them are used regularly (on a schedule, at a certain time, right after startup, etc). So of the 30-odd executables I run in a day, only 3-4 are either run on startup or run at a predictable time in the day. SuperFetch tries to predict which applications I'm going to use based on prior usage. When it fetches the wrong thing, it eats up memory and CPU priorities that makes the startup time and responsiveness for other applications vastly impaired. For example, there was a stretch of about four-five days when I *always* opened Eclipse first thing after startup and didn't shut it down until late in the evening (I just happened to have need of Eclipse right away all of those days). At the end of this stretch, opening anything else, especially right after startup was extremely sluggish.

    SuperFetch depends upon a statistically predictable workflow, and my workflow is just inherently unpredictable most of the time. I don't doubt that superfetch works very well for people with consistent patterns in their computing, but I personally find it's almost always getting in my way and slowing things down unnecessarily.

  5. The Geek

    Daniel's comment is spot on…

    Personally I end up leaving applications open and almost never closing them… since I don't care about the speed an application opens, SuperFetch isn't very useful for me.

  6. Gary

    Maybe my favorable experience with SF is because my computing habits are predictable and I seldom leave an application open for any considerable amount of time. Usually I run one app at a time. I guess I never fully got the original DOS days (pre-Windows) out of my system :-) .

    As a side note I am very pleased with Vista. It is as fast or faster then XP was. For me at least.

    btw…. love your tips Geek.

  7. jachymko

    Did anyone of you actaully read the description of SuperFetch by Mark Russinovich? SuperFetch does NOT affect (only) the startup time of applications. It makes sure the most used data and code is in memory, even if it wasn't used in the last few seconds. For example, you leave for lunch, the defragmenter or search indexer kick in, use all of the available memory, and when you return, all the running applications are paged out. SuperFetch makes sure that the applications you use are returned back to memory once it's available.

    Read more on http://www.microsoft.com/techn.....spx?loc=en

  8. Daniel Spiewak

    Unfortunately, SF isn't always that clever about doing things. Often it will prioritize the indexer too high and start cutting into other app performance. Or it will prioritize up when it thinks I'm not doing anything, but it doesn't get "out of the way fast enough". Or what's absolutely worst is it prioritizes the background tasks, then gets out of the way and the processes which are important are then no longer in active memory, but swapped out to the pagefile. This means that when I switch to an application that's in the "background" (like jEdit), the app is massively slow and hits the drive hard.

  9. jachymko

    Yeah, I agree, I'm stopping the SuperFetch service, too, when I need to run a virtual machine, because I haven't much RAM and SF is not able to release the memory in time when Virtual PC tries to allocate.

    However, I seriously doubt this EnableSuperfetch setting isn't treated as a boolean. There's no way for SuperFetch to be active during boot, since it runs as an automatic service, ie. is started by services.exe, long after the system has finished booting. Thus it makes no sense for it to have a boot-only setting.

    May I ask you, Mr. Geek, whether you have any source for this? I was looking around and found many sites saying EnablePrefetcher is a bitmask going from zero to three (the same as on XP), but only your site says that EnableSuperfetch setting behaves the same.

    I like your site nonetheless, and wish you to keep up the good work!

  10. The Geek

    jachymko,

    Thanks for your comment… I finally started doing some testing to figure out exactly what is going on. The EnableSuperfetch setting isn't a boolean… but according to my testing it doesn't do anything at all either.

    I then tested using the other key that you mentioned, EnablePrefetcher… and it looks like that is actually the correct key for this scenario. If you set it to a value of 2, it will only prefetch certain things related to booting. (look in the \windows\prefetch folder to see). I also found the MS KB article about this.

    So, it looks like I had the wrong key name… thanks for being a great and attentive reader =) I've updated the article.

  11. z

    Are u sure 2 = boot files only?

  12. Rhys

    I turned off superfetch because it sat there all day loading my bit torrent files into cache. Totally pointless. I guess it's not particularily good at seeing the difference between a program and data.

    I have one 701MB movie file that superfetch constantly reads (i.e. all day, every day). What a relief to hear my hard disk go quiet at last after turning superfetch off.

    It's a shame it does this - it seems like a good idea but badly executed.


Leave a Comment




Leave your friendly comment here. If you have a computer help question, leave it on the forums instead.

Note: Your comment may not show up immediately on the site.

Copyright © 2006-2008 HowToGeek.com. All Rights Reserved.