Page 1 of 1

Superfetch & prefetch

PostPosted: Thu Sep 25, 2014 10:32 pm
by FZR1KG
These are two windows services that are meant to increase the response of the O/S.

Now, like many things, this has advantages and disadvantages. Most people say to leave them on.
I've found that if I have them on my PC gets slow and unresponsive.
The theory behind it is good. The practical execution of it however is another matter.
For some users it's going to make their life faster and smoother.
For others like me, it makes it hell.

When researching it I found things like this:
Superfetch is very memory hungry

It isn't memory hungry because it doesn't count towards used memory. The cache is cleared if a program needs to use more memory...so it has no negative effect on memory usage.


That's a bit like saying, because I didn't marry any of the girls I slept with before I got married to my wife, they don't count, thus I was a virgin when I got married.
Brilliant!
Christian women of the world rejoice!!!!

People's ignorance of how caches work is astounding as is their understanding of the characteristics of RAM that would be affected by the overhead of having the cache purged/filled and maintained. CPU time spent, aquire time increases (as opposed to access time that remains constant based on the hardware of the RAM itself) etc.

Anyway, to get an idea of how it works you can look here when it was first introduced in XP.
You just go to the prefetch part of the description there and find this:

To minimize seeking even further, every three days or so, during system idle periods, the Task Scheduler organizes a list of files and directories in the order that they are referenced during a boot or application start, and stores the list in a file named \Windows\Prefech\Layout.ini. Figure 1 shows the contents of a prefetch directory, highlighting the layout file. Then it launches the system defragmenter with a command-line option that tells the defragmenter to defragment based on the contents of the file instead of performing a full defrag. The defragmenter finds a contiguous area on each volume large enough to hold all the listed files and directories that reside on that volume and then moves them in their entirety into that area so that they are stored one after the other. Thus, future prefetch operations will even be more efficient because all the data to be read in is now stored physically on the disk in the order it will be read. Since the number of files defragmented for prefetching is usually only in the hundreds, this defragmentation is much faster than full defragmentations.


Well, now the light switches on.
So apart from the RAM that "doesn't count non issue" issue, we have the PC doing hard disk de-fragmentation on a regular basis.
Here's the problem. From what I've seen on my PC, once it decides the PC is "idle" it starts the defrag process but once started, it never checks to see if it is still, you know, "idle".
So suddenly while you're programming code and then reading the program on the screen, the computer fires up and starts to defragment the hard drive and if you happen to want to do something really complex, like say, go to the next page of the text file you are reading, you have this really long latency period of nothingness.
Or what happens to me often is double clicking something and it doesn't start for like 30 seconds, so I figure it didn't register so I do it again. Then suddenly there are two apps loading when all I wanted was the one.
Also, the three day thing is crap. There is no timer, it's more likely based on your usage and the hit/miss ratio of the fetching operation.
mine did it daily, sometimes twice daily.
There are other issues but you get the idea. It doesn't work for everyone regardless of them saying it's the best thing since sliced bread.

So if you're having issues like me, you may want to consider disabling these two things by following these instructions.
It will slow down the boot process and some things will go slower.
What you won't however get anymore are the long sessions of hung computer while it's doing low priority maintenance tasks because it thought you were idle.