Thoughts from the EPS Windows Server Performance Team
Today we are going to discuss two new Vista performance enhancements, SuperFetch & ReadyBoost. We will also be discussing Vista RAM usage since these all work together.
First, SuperFetch is an enhancement of the Prefetcher that you have probably seen mentioned in previous versions of Windows. The Prefetcher is in charge of storing program information so that often-used programs and processes can run faster. In Vista, the Prefetcher has been tweaked and changed to be much more aggressive and intelligent in its caching to give even greater performance. This new functionality is called SuperFetch.
SuperFetch keeps track of which applications you use most and loads this information in RAM so that programs load faster than they would if the hard disk had to be accessed every time. Windows SuperFetch prioritizes the programs you're currently using over background tasks and adapts to the way you work by tracking the programs you use most often and pre-loading these into memory. With SuperFetch, background tasks still run when the computer is idle. However, when the background task is finished, SuperFetch repopulates system memory with the data you were working with before the background task ran. Now, when you return to your desk, your programs will continue to run as efficiently as they did before you left. It is even smart enough to know what day it is in the event you use different applications more often on certain days.
OK, so how is RAM usage affected? You may have noticed that Vista tends to use a much greater percentage of system RAM than on Windows XP. It is not uncommon to view Task Manager on a Vista machine with several GB of RAM installed and less than 100MB of the RAM shows up as free. For instance, here is a screenshot of Task Manager from the machine I am working on now.
As you can see, this machine has 4gb of RAM and is only using about 2.2gb considering the applications I have open (I'm currently running Outlook 2007, Word 2007, Windows Live Writer Beta, several instances of IE7 with multiple tabs open and some of my day to day tools) however it shows free physical memory of just 59MB. At first glance, this would seem to be something to worry about and this tends to make people a bit nervous, but once you consider the impact of SuperFetch this condition becomes less of a concern.
Many people tend to think of RAM as some sort of resource, and when it starts getting used up, they believe that they have a problem. In reality however, RAM is more like a cache. If your system is only using a small percentage of your cache is a huge waste. Imagine how your processor would work if its L2 cache never used more than 25% of its capacity. L2 cache is a small amount of high-speed memory that allows for high-speed access to the system's most commonly accessed data.
In previous versions of Windows, the Prefetcher wasn’t very aggressive in populating RAM. With Windows Vista however, SuperFetch tries its best to use as much RAM as it can, because if you have it you might as well make use of it.
As you may notice in the screenshot above, it only shows about 2.2GB of RAM used, yet doesn’t show the remainder as free. This is because the data in the cache is considered very low priority and any process that comes in and needs to use RAM will flush this data out transparently to the user or process. So, the memory is being used, but as far as the processes are concerned, it is empty. So what this boils down to is that even if you see that you have very little physical memory free, it is most likely nothing to worry about, it is just SuperFetch working. That having been said, if you have multiple programs that are using lots of RAM, this could still cause system resource depletion, however you would be able to see that in the Memory Usage graph in Task Manager. If you disable SuperFetch, then Windows Vista behaves more like Windows XP in terms of the Prefetcher. SuperFetch also automatically recognizes and uses any capacity afforded by storage devices enhanced for ReadyBoost and ReadyDrive for high-performance disk caching.
Now that we've introduced SuperFetch, let's move on to ReadyBoost. Whenever we talk about ways to improve a computer's performance, one of the first things we think of is adding memory (RAM) to a system. The more memory a system has, the less often it has to access the hard drive to run applications. However, adding RAM to a system is not always a viable option - either because the machine has no capacity for additional expansion, or because RAM itself is not cheap. Remember - it is important to make sure that you understand the difference between SuperFetch performing intelligent caching with available RAM and multiple programs causing resource depletion due to the amount of RAM that they use.
So what does ReadyBoost bring to the table? ReadyBoost is a new feature that allows Windows Vista to use non-volatile memory flash memory such as a USB stick or SD card to improve system performance. Hard drives are great for large sequential I/O. For those situations, ReadyBoost is not used. Handling small disk transactions is much faster on solid state memory when compared to hard disks, however the trade-off is that the continual throughput rate of a USB stick or SD card does not stack up well against a hard disk. ReadyBoost creates a copy of a portion of the disk cache and places it on the flash memory. All pages on the device are backed by a page on disk.
Disk cache is used by the system to cache recently used data. ReadyBoost uses the intelligent memory management of Windows SuperFetch to pick small amounts of data that are slow to get from the hard disk cache and makes a copy of them on the flash drive. It's important to remember that this is only a copy, so even if the stick is unplugged, no data is lost and the system keeps going. The net result is that when the system needs to access small pieces of non-contiguous data, it can get it much faster from the flash drive than the hard disk. If the system needs to access larger chunks of data, it simply uses the hard disk. At this point it is important to point out that we use AES-128 to encrypt everything that we write to the device, so if you remove the device, your data stored on the device is still secured.
OK - so what are the guidelines for using ReadyBoost? Generally, it is recommended to have at least a 1:1 ratio of solid state memory to RAM. So if you have 2GB of RAM, you should have at least a 2GB USB stick or SD card. That would be considered the ideal minimum. At the other end of the spectrum, you could have a 2.5:1 ratio of solid state memory to RAM. However, the upper limit of flash that can be used for ReadyBoost is 4GB (due to the limitations of the FAT32 file system).
So what kind of speed increases are you likely to see? In all honesty - it will vary from system to system. On a machine with only 1GB of RAM that is being used heavily, ReadyBoost will provide a noticeable performance increase. Conversely on a system with 4GB of RAM that is not really being stressed by application usage, the benefits of ReadyBoost will not be readily apparent.
There you have it - a quick introduction to ReadyBoost. The best part of ReadyBoost is that implementing it is easy; all you have to do is plug in a compatible stick and select the "Speed up my system using ReadyBoost" option in the AutoPlay interface. The configuration options of ReadyBoost are very simple - as you can see from the image at left, you have two choices when you plug in your device - whether or not to use ReadyBoost, and how much space on the device to allocate to Ready Boost. For non-technical users, opening up the case of their home systems and adding RAM can be a daunting task, but going down to the local computer store and picking up an inexpensive, compatible USB stick should be easy enough!
Here are the requirements for a ReadyBoost-compatible USB Device:
- Tim Newton
This is a great article from the Windows Performance Team on SuperFetch and Readyboost. If you read this
No sure how I found this blog but its damm good. Check out these that I have been reading today! IE7
Great article - thanks
Can I achieve a similar benefit from a flash drive in Windows XP or Windows Vista by inserting a USB drive and setting "Virtual Memory" to use it?
How is Virtual Memory on a USB drive different from ReadyBoost?
You wrote, "If you disable SuperFetch, then Windows Vista behaves more like Windows XP in terms of the Prefetcher."
How can I turn off SuperFetch? I believe it is robbinhg me of RAM as it tries to anticipate what I want to do, but it's not getting it right. So, with the Media Center open and about 10 tabs in IE7, I start losing things, like 1) The Menu Bar I set to be on, 2)The ALT button, that should turn on the Menu Bar, 3) The Menu that would open with the Mouse Right-Click, 4) some Keyboard commands (like Ctrl+N), 5) Search functions, 6) Can't open Task Manager, 7) Text doesn't appear in the Save or Save as Wigit-window, 8) Can't drag and drop URL from IE address line to Desktop, 9) will not display many open Tabs, even though they say Done. 10) Can't choose Menu Bar ON or OFF Under IE's Tools, even though it may already be checked. Oh, and sometimes it just CRASHES IE.
I can fix some with an alteration of an XP Registry fix for the Menu Bar problem (ITBar7Layout in Vista). Sometimes closing down things in a window or with the Task Manager (if I can get it to open). Sometimes it takes all that and a reboot. Who wants to work with NOTHING open, or rather HOW can one work with nothing open.
BTW, I have Vista Home Premium, running on a dual quad HP machine with 3 gig of RAM, but it feels like 16 mb. Help?
Use Diskeeper and insure your startup is not full of junk programs so disable them ie those that are of no use. Many sites on the net will let you know exaxtly what to disable and what not. Go to run, type msconfig, and go to startup and this does a good job however vista wants you to go through defender which is BS as most programs are not accessable. Good luck and email me at email@example.com for any questions... Cheers...Pat
I've 3GB of RAM and a game I play frequently has one humongous 3GB file (and increasing) which SuperFetch likes to fetch.
So each time the game's data file is updated, the harddrive will go crazy the next time I log on, and slow everything else down.
Is there a way to make SuperFetch selectively ignore certain files?
I have been searching but no luck... I had an older laptop with Vista Ultimate installed, which I used ReadyBoost on with a 2GB flash drive. Once the computer is rebooted I could no longer adjust the ReadyBoost settings on the drive. I tried deleting the ReadyBoost file and formatting the drive, however, it says the drive is write-protected. Now I bought a new computer and would like to use the drive for normal file storage purpose. How do I do so?
I really appreciate your help.
I recently upgraded to Windows Vista and I have lots of IO problems. The hard disk seems very slow. It's scratching lots of times and the GUI become unresponsive. I have updated all the drivers, patches and to Windows Vista SP1 RC. I know that I can disable Windows Search but it didn't make a difference. Is any option that a SD Card can be used as a ReadyDrive cache? My machine has 2GB of RAM and I tried with 2 Gb SD card but I can't find any benefit, it's deadly slow from time to time. What can I do? Throw away the 7200rpm 2.5" harddisk of my notebook and buy an expensive SSD disk? WHat about Samsung Vaulter Disk, is it going to make a difference?
My new Dell with vista, Quad core, and 4 Gigs of ram is as fast as my old windows 95 most of the time. I constantly have around 40% RAM use and even the apps I use everyday open and work slowly, help.
I forgot to add that I always have more than 80 processes running, including about 10 Host Process for Windows Services, not sure if this is normal of not.
If I were to buy a Desktop PC that was came with Vista installed, I would definitely find a Vista disk somewhere and reformat as soon as possible. Many vendors will often load a bunch of crapware that will eat up resources. I have a HP computer that did have almost 80+ processes running because I let HP put all of their stuff on it, and when I reinstalled Vista after a clean reformat, I had less than 45 processes running, and after disabling some useless Vista services, I'm down to 36 processes. Not to mention I only have 1 GB of RAM, and Vista is very smooth for me.
Vista isn't a bad OS, just takes some time to configure and play with it. The more RAM it's using for my benefit, the better.
I've got a similar problem to Swillis - SuperFetch is trying to be clever but simply getting in the way. I keep a lot of applications open at once, and often switch between them. However, if I leave an application unused for an hour or so, it appears to get paged out to disk, so I have to wait for 10 seconds while it all gets loaded back up again. If I turn of SuperFetch (or go back to XP64) then my currently open applicatiosn stay in memory much longer. It appears that SuperFetch is being far to aggressive in pre-loading stuff off disk.
(using Vista Ultimate x64, 4 GB RAM)
On a Sony Vaio machine, so with many of there junk processes running (btw rather put machine in bonfire, than trying to rebuild - not enough skills). I have Vista business, with 2MB RAM.
The machine never gets beyond using about 56-59% of ram, although as per the article the free memory is tiny - so superfetch must be at work.
However at this point the machine stops opening any more applications (or even internet pages), I click on stuff (apps or links in web pages) and nothing happens, no error message, and just no response - if I close something down, then I can open the app or link. (btw after a while this can happen when very few apps are open, then requiring a reboot in order to "clean-up" processes)
According to the article the difference between 57% being used and none being free, is meant to be low priority and be transparently flushed out if it is required elsewhere - for me this just does not seem to happen, what am I missing, I find this really frustrating, as in the end I have not (performance wise) ended up with the machine I paid for. help... thanks
It is good to know how and what exacly this new things supose to do in Vista. Very nice, clean article.
Everyone who post here should learn to read and understand what superfetch is before posting. any comp cleaned up properly will run amazing