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 363005
To view parent comment, click here.
To read all comments associated with this story, please click here.
segedunum
Member since:
2005-07-06

Superfetch loads things in memory it thinks you'll need. If you don't need it, no harm done - 'unloading' doesn't exist.

Managing memory in any way is expensive. You have to manage that cache. Nothing is ever cost-free.

Same story with the linux memory management, expect that the linux one is less smart.

This is nothing like Linux memory management. Linux traditionally keeps a cache because memory is wasted if it isn't used. Old pages are paged to disk cache regularly. So far, so good. What Superfetch does on top of that is to 'intelligently' preload applications into a cache it thinks that you'll need at startup and as it's running. That's an expensive operation from an I/O point of view that is not guaranteed at all to help you at any given time or any given application you might be using. Preload for Linux faces all the same unreproduceable issues and questions of whether it makes a real difference to a user's overall usage. Hell, Linux's caching alone still has some extreme corner cases.

With Linux, if you load something once and then again and it is still in the cache then great. Things will be faster. However, it does not attempt to constantly fill and manage the cache based on its idea of what your usage pattern is. That's the key difference. In theory, it would be great if you could get that right which is why people think this is such a great idea but in practice things are very different.

Besides, with any form of caching the central point stands and this certainly stands with an additional service over and above caching such as Superfetch. You need plenty of 'free' memory over and above what applications you use to make it work. It's fine when you can put 'free' memory to work but it's not fine when you don't have it which is often the case on desktop systems. Whereas the cache itself might be relatively cost free given the benefits, if you start sticking a service on top that decides what should constantly be in the cache then you get a whole bunch of real unknowns.

It's not really the technological idea that is at fault with Superfetch. It's the idea that it knows what your usage pattern is, it knows what you'll be running in the future and the algorithms responsible for deciding it.

Reply Parent Score: 2