Superfetch gone mental?

AnnaJ

New Member
In theory, Superfetch seems like a good idea, but could it suffer from a bit of insanity? I've noticed, that when I've used a virtual machine (in VMWare) and shut down the virtual machine, the HDD LED lights up for 5-10 minutes and the HDD noise is a major nuisance. Looking in resource monitor, it seems that Vista keeps reading the virtual disk file of the VM I've just shut down. Stopping Superfetch stops the HDD noise.

Why would Superfetch start caching a VM disk file when I've shut down the VM? Isn't the whole point of Superfetch to cache files before I use them, and not when I've finished using them?

Also, when I start the system, the HDD works constantly the first 20-30 minutes. I've got 8 GB RAM, and reading 8 GB from the disk doesn't take 20 minutes, so how can Superfetch spend so much time reading the disk when it should have filled all the available cache memory within 10 minutes of frantic HDD reading?
 

My Computer

I had similar experiences. In fact, Superfetch slowed things down instead of speeding things up due to its massive HDD-access. It also took like 10 minutes after a reboot till it was finished (I have 4GB RAM) and it did its chores repeatedly since I use many RAM-excessive applications. I have 3 HDDs in my comp and they are not the newest models so I also had to stand quite the noise.

My solution? Disable it altogether. I realized an increase in speed due to Superfetch not occupying my HDDs and with them the system bus and my whole system got a lot more responsive and less noisier. As for the long loading times, that's quite normal. Don't forget that Superfetch might load a lot of small files which might be scattered all over your HDD (even if they weren't, reading small files is significantly slower than reading large ones). And it does all that while you're already working on the system which means that it has to flush pre-loaded parts due to new applications demanding RAM and then it has to reload the data. All in all, that's a never-ending task. Personally, I think that Superfetch rather helps wearing down your hard drives fatser (unless you're using SDDs) instead of accomplishing much. The idea behind it is nice, but it's still too basic to be of much use. For example it doesn't give you the option to exclude or specifically force the loading of files. Same goes for loading files according to certain file orders etc.

Anyway, give deactivating it a try and see if you see notable performance hits/increases.
 

My Computer

I've had it deactivated a few days and program startup is a bit slower. Still, I rather wait those few seconds every now and then, than listen to incessant HDD rattle.

To experiment further, I just set HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters to 1, which means that Superfetch should only cache in order to speed up boot time according to various sources (none of them Microsoft) on the net. The sources seem wrong though, since the HDD immediately got busy when I did that and it was hours since I booted.
 

My Computer

which means that Superfetch should only cache in order to speed up boot time according to various sources (none of them Microsoft) on the net. The sources seem wrong though, since the HDD immediately got busy when I did that and it was hours since I booted.

The description also makes little sense (at least to me), because during boot time Windows is busy loading its own components. SuperFetch should only kick in when Windows is done so in that case deactivating it should actually be the only option.

One hint: Use Disktrix' Ultimate Defrag to push the windows, user and program files folders to the outer part of your HDD. It also supports sorting files according to Windows' loading habits, so this can speed up booting times tremendously.
 

My Computer

The description also makes little sense (at least to me), because during boot time Windows is busy loading its own components. SuperFetch should only kick in when Windows is done so in that case deactivating it should actually be the only option.
My thoughts precisely. I can't see how caching could speed up boot time, since Vista is constantly loading itself from the disk during boot. There's no disk idle time during boot, when the OS would have a chance to prefetch subsequent boot files.

Maybe there's a little mythology involved in the internet sources about the EnableSuperfetch setting? Could be a case of nobody knows and everyone is quoting the first source they saw.
 

My Computer

This sounds very likely. Many people just regurgitate what they read elsewhere without checking, or even worse, make up stuff along the way based on misconceptions and lack of knowledge, mixed with poor memories about something they once heard.
 

My Computer

You can check that faster. SuperFetch stores all files it pre-loads in a "Prefetch"-folder in your windows directory. Also, you can use Process Monitor to monitor file access. This way you can instantly see which files are accessed by SuperFetch and in which manner:

Process Monitor
 

My Computer

I'll give it a few days to run though, in order to build up usage statistics in the Prefetch folder, and clear that folder when I change the setting so that it'll have to rebuild it from scratch with the new setting.
 

My Computer

Forget my previous post about letting it run a few days with setting 1, Superfetch has already gone mental on that setting. I just shut down a VM and Superfetch starts reading the VM disk file like mad - as usual. Don't really know what the point of such a postfetch is, wasn't it suposed to be prefetch? Anyway, that indicates that setting 1 has nothing to do with booting. Testing setting 2 now.
 

My Computer

Well Vista apparently "pre"fetches it for your next use. It doesn't know that you don't plan to use it again for this session ;)

Could it be that you just recently set up the system? That would explain why Vista jumps at your VM disk. It just doesn't have any other files to pre-cache yet, since you presumably didn't use your system excessively enough to concentrate on other files. Or you used your virtual machine so often that Vista assigned all components around it a very high priority. Vista isn't smart enough to know that the vm-file is just an image. Apparently it indexes all files that are queried by the application in question.
 

My Computer

The system was set up about 18 months ago. I use some VMs often and most ones infrequently, but Superfetch doesn't seem to care, it just thinks that the one that was closed most recently should be cached. Running on setting 2 now, so I'll see how that works out.
 

My Computer

Having used setting 2 for some days, it seems that there's no prefetch at all going on. Still, the C:\Windows\Prefetch folder gets populated. The system was a tad faster with PF turned on (setting 3), but it wasn't worth the disk noise.
 

My Computer

Back
Top