Eighteen months ago, I wrote a blog post in which I debunked the myth that SuperFetch is merely a memory hog and that it should be disabled. I even included some benchmarks that showed the potential performance loss after disabling the feature.
The reaction to this blog post was overwhelming! Many of you reported experiencing severe performance problems when running SuperFetch and have questioned its actual benefit, while some have said that they can’t live without it.
In this blog post, I am going to continue the discussion with a deep dive into SuperFetch (and the comments to my original blog post) and help you determine if it is really the root of your PC performance problems.
Question #1: Should SuperFetch be disabled on Solid State Drives (SSDs)?
SuperFetch is designed for traditional mechanical disks. It allows parts of your programs to be loaded from the extremely fast RAM instead of the slower hard disk. Since SSDs are very fast with loading smaller chunks of data, SuperFetch barely makes a difference in terms of performance when running applications. Even Microsoft addressed this issue a couple of years ago.
“If the system disk is an SSD, and the SSD performs adequately on random reads and doesn’t have glaring performance issues with random writes or flushes, then SuperFetch, boot prefetching, application launch prefetching, ReadyBoost, and ReadDrive will all be disabled.
Initially, we had disabled all of these features on all SSDs, but we encountered sizable performance losses on some systems. In getting to the root of what was causing these losses, we found that some first generation SSDs had severe enough random write and flush problems that ultimately lead to disk reads being blocked for long periods of time. With SuperFetch and other prefetching re-enabled, performance on key scenarios was markedly improved.”
First of all, in many of my tests, SuperFetch and prefetching was still enabled—both on slower and faster SSDs. Next, I wanted to find out if there was any loss in performance once I disabled SuperFetch.
To determine boot time, I used “Windows Performance Toolkit” and let it run a boot trace five times each .
In total, boot time decreased because there was no SuperFetch populating the memory with frequently used data (e.g. your programs). It wasn’t much, but it was definitely noticeable in each of the five runs.
From there, I used AppTimer to determine the exact start-up time of frequently used application iTunes and SuperFetch’s impact on its performance.
In this case, turning SuperFetch off had a negative effect on iTunes’ start-up time, but keep in mind, I was using a pretty slow Samsung SSD from 2008. Next on my list to test was the launching of Outlook 2010.
In stark contrast to iTunes, Outlook 2010 didn’t really slow down much when I turned off SuperFetch—we’re talking just a couple of milliseconds here. As you can see, on a slow SSD, it depends on the type of program you’re using. On a fast SSD, however, turning off SuperFetch either had no effect at all when launching the PC or even resulted in a slight increase in application launch performance. For the latter type of SSDs, I recommend making sure that SuperFetch is turned off. Go to “Control PanelSystem and SecurityAdministrative ToolsServices” to disable it.
If you’re running an older SSD, it might be helpful to run AppTimer and determine the impact on performance yourself.
Question #2: Is SuperFetch the cause of extensive hard disk thrashing?
Many users blame SuperFetch for keeping the hard disk churning nearly 100% of the time, even when idle. They experienced a lot of hard disk thrashing, slowdowns, and freezing—and when they turned SuperFetch off, it immediately helped with these problems. While I don’t doubt that at all, it’s really hard to pinpoint SuperFetch as the single source of these issues. Keep in mind, your average system has about 100 processes running at the same time, dozens of services active in the background, and many scheduled tasks waiting to run.
My suggestion: Use Process Monitor and watch what your system is actually doing during these hard disk operations. If you see thousands of operations caused by “Sysmain” (SuperFetch), then turn it off. If it’s something else and you’re using a traditional hard disk, then make sure that SuperFetch remains on.
Question #3: Can SuperFetch support random PC usage?
SuperFetch tries to predict what you’re going to run next and pre-populates memory with the required information. However, some users’ routines change daily. As our reader, Chrome, noted earlier this year:
“From your description of what it does, it simply will not work for me. I have about 30 applications that I use during the course of a week, none of which are on a schedule. SuperFetch cannot possibly know when I will start up one app or another since that changes all the time! I think that’s why it had trouble staying silent when my PC does go idle. It keeps trying to guess, and in doing so, is producing constant wear on my HDs. For me, this service simply does not work since it cannot predict my usage properly. Even I can’t, how can this service?”
For these specific scenarios, I advise turning SuperFetch off, as you likely won’t benefit from having it enabled. However, keep in mind that all of the programs you do launch regularly may start up more slowly.
Question #4: Does SuperFetch “fetch” large files that you only access once?
Our reader, Dezso Tamasi G, doubted the benefit of SuperFetch:
“I tested it almost 10 times. I attached a 1TB USB HD to the PC. Then I copied 2–10 GB of data on it. (Nothing executable, 500–2000 MB RARs, ISOs) Then I tried to detach the drive. All applications were shut, nothing touched the HD, the message was “can’t remove drive, some program uses it” blabla. And tried, and tried, and tried to remove the HD. In the moment, I disabled the glorious SuperFetch, and then I could remove the drive. Additional info: The Windows Search service was disabled at the beginning of the test. And no virus scanner was enabled on the system. It was definitely the SuperFetch. This doesn’t fit with your description. The 500MB RAR file is neither an executable nor a regularly used file. What does SuperFetch do with this and denies to detach the drive?”
Without having your system at hand to determine the exact cause, I can only guess that SuperFetch isn’t it. SuperFetch is not designed to work that way. According to Mark Russinovich’s book, SuperFetch avoids large files you only access once.
The problem the reader is describing is not uncommon and might not necessarily be SuperFetch’s fault. When you copy files to your hard disk, the progress bar indicates that it’s done, but in many cases, it takes a while until the very last write operation is finished. Depending on the size of the operation, it might need another 20–30 seconds until you can safely remove the drive. Another program might be responsible for the permanent file access. This could be software that scans files for multimedia content. In such cases, I would advise turning off all background applications and re-testing this.
This marks the end of Part 1 of my SuperFetch Q&A! Stay tuned for Part 2 in which I’ll answer more of readers’ questions.