There’s a statistic which states that on average, 86 percent of Windows 7 machines are regularly running 90 percent to 95 percent available RAM full. With just a web browser and an email client running.
Irrespective of whether you have 1Gb, 2,Gb, 4Gb or more, you will probably only have a couple of hundred mega-bytes free. Since Windows Vista and Windows 7, the operating system uses nearly all of your RAM.
This doesn’t mean Windows is broken. This is by design. With Vista, Microsoft introduced a new feature, SuperFetch, updated in Windows 7, in the attempt to better utilise the available memory.
SuperFetch is a caching program, driven by an algorithm that attempts to predicts which boot files and applications you will run next and preloads the necessary data into memory. By pre-fetching the data from a slow hard drive into fast RAM, programs launch much quicker and Windows boots faster. In theory.
The SuperFetch algorithm builds a predictive table to determine which application users will open by a certain time of day and day of week. It also attempts to predict the next three applications that the user will launch based on past behaviour. You are being watched.
To avoid conflicts, SuperFetch prioritises foreground programs over background tasks, such as defragmentation. SuperFetch is supposed to be dynamic in that it adapts over time, adding and removing frequently used programs
There are other statistics that state how much idle time there is whilst the computer waits for you to move the mouse or press a key. At multi-Giga-hertz clock cycles, that’s a lot of idle time. SuperFetch has all that time to fill the majority of RAM with cached data and, supposedly, still more of it to flush the cache and re-load when you tell it do bring something off-prediction. The little bit of RAM that’s left empty is the contingency in case of unexpected demands from hardware and applications.
SuperFetch is not supposed to have a negative impact on performance; as soon as a new application demands memory, the SuperFetch local allocation table for the cache is flushed and the actual data left behind is overwritten.
Some Windows users complain about the performance of both Vista and Windows 7, mostly, it has to be said, on machines with a low Windows Experience Score; that’s Microsoft’s own attempt to benchmark your PC using standardised performance measures for processor, motherboard chip-set, RAM, disk and graphics. It’s far from perfect and weighted to make Windows look as good as possible. Some people have blamed SuperFetch for slow performance, declaring it inefficient in pre-fetching the wrong data and flushing the cache too slowly. Not immune to such criticism, Mehmet Iyigun, Principal Development Lead at Microsoft, outlined a number of improvements for Windows 7:
“During Windows7 development, we made a number of improvements to how SuperFetch manages memory. Many of these changes were directly in response to customer comments…”
- Be quieter: Even though SuperFetch always utilizes low-priority I/O for its memory population in order to avoid interfering with foreground activity, we found that many users get annoyed at hearing the disk activity and seeing the disk light blink. In Windows7, SuperFetch is a lot more respectful of user presence.
- Be more selective: In Windows7, SuperFetch still populates the OS cache with frequently-accessed data from the disk and prioritizes RAM contents, but the underlying algorithms have been improved over Vista. As a result, SuperFetch now typically prefetches a smaller, but more relevant volume of data from the disk and prioritizes memory more effectively.
Overall, our results (from a number of users over weeks) indicate that disk activity due to SuperFetch is significantly lower in Windows7 compared to Vista while system responsiveness is much improved due to fewer hard page faults from the page-file and other files.”
On a personal note, I have to agree Windows 7 is significantly faster than Vista – but then most glaciers move faster than Vista. How much of the speed improvement is SuperFetch and how much is the thorough re-write of the whole driver- and code-base is another question.
Yes it is possible to adjust settings for SuperFetch and even disable it. Unless you’re a PC speed-freak and habitual tinkerer – in which case, there’s more for you in another post – then you might want to leave well alone and trust the current version to do a better job than you at filling your PC’s memory. AJS