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.
Permalink for comment 362927
To read all comments associated with this story, please click here.
Not all sunshine
by malxau on Tue 12th May 2009 00:32 UTC
malxau
Member since:
2005-12-04


Contrary to what many Windows tweaking guides on the internet tell you, SuperFetch does not impact your every day computing experience in a negative way. SuperFetch makes often-used applications load fast - it doesn't make other applications load any slower. As such, turning it off, as some guides advise you to do, can only result in a slowdown, not a speed up.


This is dramatically oversimplified. Superfetch is a) generating IO to load all that data in; b) consuming memory to load it to and c) guessing about what data will be used next. If it guesses right, you get a speedup. If it guesses wrong...well, let's hope you weren't waiting on any IO or needing RAM at the time.

Vista added low priority IO and low page priority in part to limit the damage superfetch can do in those negative cases. Win7 has done considerable work to make low page/IO priority more effective and generate less inversions. But it can still do damage, believe me.

I used to build overnight. I'd come in in the morning and check email. Outlook would fight with superfetch - SF was trying to pull back in the stale build data (that I'm finished with) and would evict my email cache to do it. Outlook generates plenty of IO and uses plenty of RAM on its own, so superfetch was hurting my foreground task to benefit a task which was no longer occurring. In the end, I killed superfetch in frustration, and now accessing email in the morning is painless.

I should also add that tracking usage patterns is not free. There is a component in Vista (fileinfo) that does this tracking. Essentially, every time you open a file is needs to look up the name of the file in order to record access information about it. This slows down file system access by around 10%. Benchmarking superfetch reliably requires removing fileinfo to generate an apples to apples comparison.


I didn't buy 4GB of top-notch RAM just to have it sit there doing nothing during times of low memory requirements.


Perhaps not. But if your disk can read at 50Mb/sec, all your apps are perfectly defragmented and sequential, it will take SF 80 seconds to populate your RAM with apps. In reality it will take longer. Since RAM is increasing faster than disk bandwidth, the sky is the limit for how long this process can take.

If you leave your PC on all the time, that's not such a problem. If you boot, run a random app, and shut it down, SF is generating IO that is of no benefit to you, and may be negatively impactful.

With any heuristic, the user relies on the guess being correct. Guess right, perf goes up. Guess wrong, perf goes down. By nature, superfetch cannot be right all the time. Whether it is a win for you depends on how "predictable" superfetch determines you are. This is why opinions on this feature are so varied on the internet - every user is different.

Reply Score: 6