Linked by Thom Holwerda on Mon 11th May 2009 20:43 UTC
Windows SuperFetch is a technology in Windows Vista and onwards that is often misunderstood. I decided to delve into this technology to see what it is all about, and to dispel some of the myths surrounding this feature.
Thread beginning with comment 362902
To read all comments associated with this story, please click here.
super fetch and assumptions
by TechGeek on Mon 11th May 2009 21:17 UTC
TechGeek
Member since:
2006-01-14

The problem with SuperFetch is that Microsoft designed it making certain assumptions. And you know what they say about assumptions. Let me explain:

Microsoft assumes that the normal user is going to use the same apps over and over and over. It then fills up memory pre-loading these apps. What happens when I want to run a big app that I dont run often? How does this work with multiple users?

As a real world example, I run computer labs at a university. We moved to Vista this past year. Computer performance got worse as the day goes on. Why? Different users use different apps. And the computer can't make any long term predictions. So everytime a user does something, the system has to unload what is in memory and then load something new. This results in lots of disk thrashing and horrible performance.

Another bug we ran into was using products like deep freeze and drive shield. How is Vista going to learn usage patterns when it can't make permanent writes to the drive? It doesn't.

Superfetch can be useful, but it can also be a pain. The most useful idea would be to allow the system admins to pick which apps get pre-fetching and then turn off the adaptive learning part.

Reply Score: 10

daedliusswartz Member since:
2007-05-28

I wouldn't call your experience with SuperFetch a bug. It sounds like it simply isn't a good feature for your situation.

Reply Parent Score: 3

Thom_Holwerda Member since:
2005-06-29

As a real world example, I run computer labs at a university. We moved to Vista this past year. Computer performance got worse as the day goes on. Why? Different users use different apps. And the computer can't make any long term predictions. So everytime a user does something, the system has to unload what is in memory and then load something new. This results in lots of disk thrashing and horrible performance.


Couldn't this be solved by using multiple accounts? I'm actually researching this now, because it dawned on me that if SuperFetch data is stored in /Windows/Prefetch, how is it multi-user aware?

Maybe it uses attributes or ACLs to tie .pf files to user accounts? I really have no idea, and Google isn't helpful either. Maybe PlatformAgnostic (you there?) or some of the other Windows NT experts in here can help us out...?

Reply Parent Score: 1

Vide Member since:
2006-02-17

mmmh.. why SuperFetch (or any other similiar application) should care about different users? I mean, it is focused towards programs. Word loads the same exe and the same dlls when launched by mum or dad or joe the plumber, so cached memory is still the same.

Reply Parent Score: 1

hufman Member since:
2008-10-11

The PreFetch directory can be shared across accounts, because it merely contains the list of what libraries need to be loaded by each application. The user's profile of often-used applications doesn't live in there, I don't think.

Reply Parent Score: 1

kerframil Member since:
2005-07-13

Couldn't this be solved by using multiple accounts? I'm actually researching this now, because it dawned on me that if SuperFetch data is stored in /Windows/Prefetch, how is it multi-user aware?

It's really quite simple. The SID of the user account is referenced in the filename (depicted here as %SID%):

AgGlUAD_P_%SID%.db
AgGlUAD_S_%SID%.db

Also, the .pf files are nothing new. These are trace files that are used by the cache manager to improve application launch times through strategic prefetching. This is a feature that was introduced in XP and, as far as I'm aware, has nothing to do with SuperFetch. The windowsitpro.com site has a fairly detailed article about it:

http://tinyurl.com/9qhwso

EDIT: I didn't notice at the time of writing that the distinction between prefetch and superfetch is elaborated upon to some extent in later comments. Still, the above article goes into rather more detail.

Edited 2009-05-16 05:24 UTC

Reply Parent Score: 1

RE: super fetch and assumptions
by rexstuff on Mon 11th May 2009 22:42 in reply to "super fetch and assumptions"
rexstuff Member since:
2007-04-06

If SuperFetch is just caching and prefetching, wouldn't 'unloading' it take virtually no time, as the memory need not be swapped out or written to disk? And, I would assume, that any work done by SuperFetch is done with ultra-low priority. So, it seems to me, no matter how you cut it, SuperFetch should not cause the performance degradation you're describing; while not providing any benefit, it shouldn't make things any worse than if SuperFetch didn't run at all...

Are you sure this is being caused by SuperFetch? Could it be there is something else causing the performance to degrade over the day?

Reply Parent Score: 6

RE: super fetch and assumptions
by WereCatf on Mon 11th May 2009 22:43 in reply to "super fetch and assumptions"
WereCatf Member since:
2006-02-15

As wonderful a feature as people make it sound like me neither would benefit much from SuperFetch. I have only 1GB RAM and whenever I am on the computer I am doing memory-heavy things on it like f.ex. programming, 3D modeling or gaming. There simply isn't any memory left to cache anything.

I was planning to try Win7 RC out soon, but I'll have to disable SuperFetch. It'll most likely just slow the performance down in my case instead of boosting it.

Reply Parent Score: 2

stooovie Member since:
2006-01-25

Well, you should seriously consider upgrading from 1 GB RAM in 2009, especially if you are into FX, 3D and games ;)

Reply Parent Score: 1

RE: super fetch and assumptions
by azrael29a on Wed 13th May 2009 16:09 in reply to "super fetch and assumptions"
azrael29a Member since:
2008-02-26

Same happens when you run games. I ran Silkroad Online installer (MMORPG) which is 2GB in size and Vista's Superfetch was reading this file after every reboot - this is _retarded_.

Reply Parent Score: 1