Why does Windows 7 disable Superfetch?

kalniel

Member
Aug 16, 2010
52
0
0
If an SSD is fast enough, Windows 7 automatically disables Superfetch. My question is: Why?

I can understand that the part of it that works with the defragmenter to re-order disk files is clearly not needed with an SSD. But RAM is still at least an order of magnitude faster than SSD so pre-caching must be a good thing right? Especially if we have oodles of RAM in 64bit builds.
 

Idontcare

Elite Member
Oct 10, 1999
21,110
59
91
I'm trying to remember the backstory on this one but it had something to do with superfetch causing enough behind-the-scenes activity that it made the cheaper/crappier SSD's go bonkers and totally take a nose-dive in performance.

The newer SSDs and the Intel drives don't have the problem but MS decided to just "fix" this one with a single broad stroke of the brush.

Basically the choice was leave it on and have your somewhat fast SSD grind to stuttering halt in time or turn it off, take a slight performance hit but ensure the system overall remains fairly sporty.
 

Cogman

Lifer
Sep 19, 2000
10,283
134
106
I'm trying to remember the backstory on this one but it had something to do with superfetch causing enough behind-the-scenes activity that it made the cheaper/crappier SSD's go bonkers and totally take a nose-dive in performance.

The newer SSDs and the Intel drives don't have the problem but MS decided to just "fix" this one with a single broad stroke of the brush.

Basically the choice was leave it on and have your somewhat fast SSD grind to stuttering halt in time or turn it off, take a slight performance hit but ensure the system overall remains fairly sporty.

This is pretty much it. Super fetch works on principles of data locality and a smart algorithm to record program usage. It requires a fair amount of hard drive usage which is the death kneel of some SSDs.

Windows 7 turns off pretty much all hard drive thrashing features when an SSD is detected (Such as background defragmentation). It could be considered the first MS operating system to be SSD aware.
 

Voo

Golden Member
Feb 27, 2009
1,684
0
76
Huh? Got a Intel G2 160gb and Win7 fetches data just fine in the RAM (at least memory is reserved in the resource manager and the service itself is running). I remember there were some rumors about that (one blog post from one developer and that months before they released the RC), but as far as I know in the end they didn't implement it that way - after all RAM is still an order of magnitude faster than a SSD..

PS: And no, the service isn't just running because I've got HDDs in the PC as well.. or maybe it is, but it's still caching stuff from the SSD - according to the stuff in Windows/Prefetch at least (actually it's almost only caching stuff from the SSD since that's where the apps are ;) )
 
Last edited:

Idontcare

Elite Member
Oct 10, 1999
21,110
59
91
Don't know what to tell ya Voo, my Win7 install onto a G2 160GB resulted in superfetch disabled "out of the box" which is consistent with what most people seem to report is supposed to happen. Have no idea how to explain the fact your situation is different.
 

Voo

Golden Member
Feb 27, 2009
1,684
0
76
Hmm, yeah that's strange - maybe I'm looking at the wrong things?

1. under services superfetch is started and has automatic as startup type (and I didn't manually fiddle with that entry ever)
2. resource monitor shows around 1 1/2gb of memory as standby and only 300mb as free (and that's a high number, usually it's more ~60mb)
3. Windows/Prefetch has lots of files in it, also from my SSD drive

Win7 x64 Professional msdn iso. Configuration: 160gb Intel g2 with the OS install and apps, 3 other HDDs for data.


Well not that it is important (imho it's still the prefered configuration anyhow, so actually it's fine that way), but it's still strange
 

hclarkjr

Lifer
Oct 9, 1999
11,375
0
0
same here, i have a G2 80GB and have not messed with any services on fresh install. superfetch is running for me too
 

sub.mesa

Senior member
Feb 16, 2010
611
0
0
Because it doesn't have any real benefit on SSDs. What SuperFetch did was allow pre-reading parts that very likely will be accessed shortly after booting, such as firefox data if you start Firefox frequently. Without SuperFetch, this would take a long time since the HDD has to seek; it is very bad if the I/O pattern is not sequential.

SuperFetch in essence allows the HDD to read sequentially instead of random reads with lots of seeks, it also reads this stuff even before it was ever requested. SuperFetch detects your frequent usage and creates a 'profile' of most frequently accessed data which will be pre-loaded next boot.

On HDDs this makes a lot of sense, on SSDs it only adds to boot times while having virtually no benefit as modern SSDs can do random reads extremely fast; up to a thousand times faster than HDDs in extreme cases (multiqueue random read 512byte). The difference between reading from SSD to launch Firefox instead of from RAM is therefore quite small; it was the seeking that caused slowness on HDDs not really the large bandwidth required.
 

Idontcare

Elite Member
Oct 10, 1999
21,110
59
91
Hmm, yeah that's strange - maybe I'm looking at the wrong things?

1. under services superfetch is started and has automatic as startup type (and I didn't manually fiddle with that entry ever)

Or I'm looking in the wrong place?

Here is what I see for Superfetch:
SuperfetchProperties.jpg


It says disabled, has ever since I first looked at it. I've got the G2 SSD as well as three 2TB spindle-drives installed and 8GB of ram with Win7 Ult 64bit...

This guy could be full of crap but what he says sounds reasonable to me:
Hi Bill, actually Windows 7 automatically disables SuperFetch for MOST systems with SSDs. Win7 checks the performance of the hard disk and – if random writes and flushes are being performed fast enough – disables SuperFetch and other prefetching features. However, if you have a SSD that doesn’t meet the speed requirements (which is very rare) Windows 7 leaves it on for a performance boost.
So I urge you to let the Windows 7 operating system decide and not enable or disable SuperFetch manually!

http://blog.tune-up.com/myth-buster...erfetch-on-vista-and-windows-7-is-a-bad-idea/
 

Voo

Golden Member
Feb 27, 2009
1,684
0
76
On HDDs this makes a lot of sense, on SSDs it only adds to boot times while having virtually no benefit as modern SSDs can do random reads extremely fast; up to a thousand times faster than HDDs in extreme cases (multiqueue random read 512byte). The difference between reading from SSD to launch Firefox instead of from RAM is therefore quite small; it was the seeking that caused slowness on HDDs not really the large bandwidth required.
I wouldn't downplay the difference between RAM and SSDs, after all we're still talking about a much higher bandwidth and latency - obviously not nearly as bad as for HDDs, but still noticeable (starting FF is actually a great example, because at least for me I still can notice the difference between a cold start and when it's already loaded in the RAM)

And shouldn't superfetch idle 2minutes after startup? Was sure they changed that with Win7, so there shouldn't be any worse startup time with or without superfetch. So I still think it's better to use the RAM for anything than let it go to waste. After all I think we do all agree that RAM is still faster than a SSD - both bandwidth and latency wise.


@IDC: Nope, we're looking at exactly the same window..
superfetch.png

Seems like Windows falsely identified my SSD when installing (the quote sounds reasonable) - interesting, especially considering how almost identical our setups are otherwise.

Edit: That post is probably the source of lots of stuff about SSDs/Win7 that's floating around: http://blogs.msdn.com/b/e7/archive/2009/05/05/support-and-q-a-for-solid-state-drives-and.aspx Old, but couldn't find anything newer from MS itself after a short search and I remember that article from when we first discussed it. Question is how much if any they changed between that post and the RC
 
Last edited:
May 29, 2010
174
0
71
Well I have tried superfetch both on and off on my x58 6 core desktop 12GB RAM with a fast SSD. It seemed to make NO difference in boot up speed. As in it was about 17 sec's to boot to the desktop regardless. I measuer boot speed from when I first see the windows loading bars to desktop, I am not counting the BIOS enumeration time.

That being said, on my ATOM netbook with 2.5GB RAM and a similar SSD as my desktop, turning off superfetch made it boot faster by about 7-8 seconds. Basically around 27 seconds to boot with Superfetch off versus about 34 secs with Superfetch on.

Both were running Win7 Pro, however my desktop had 64-bit, while the netbook was running 32 bit.

FYI: with the original 160GB hard drive, the netbook used to take about a minute+ to boot (and that was with Superfetch on). The problem with the ASUS netbook is that it maxes the SATA speeds to 1.5GB/s SATA1 speed.
 
Last edited:

Rubycon

Madame President
Aug 10, 2005
17,768
485
126
Something has disabled mine permanently! Apparently a GPO. If I try to start that service it fails with "cannot find specified file".

It's ok as the array is plenty fast. :)
 

kalniel

Member
Aug 16, 2010
52
0
0
Because it doesn't have any real benefit on SSDs. What SuperFetch did was allow pre-reading parts that very likely will be accessed shortly after booting, such as firefox data if you start Firefox frequently. Without SuperFetch, this would take a long time since the HDD has to seek; it is very bad if the I/O pattern is not sequential.

SuperFetch in essence allows the HDD to read sequentially instead of random reads with lots of seeks, it also reads this stuff even before it was ever requested. SuperFetch detects your frequent usage and creates a 'profile' of most frequently accessed data which will be pre-loaded next boot.

On HDDs this makes a lot of sense, on SSDs it only adds to boot times while having virtually no benefit as modern SSDs can do random reads extremely fast; up to a thousand times faster than HDDs in extreme cases (multiqueue random read 512byte). The difference between reading from SSD to launch Firefox instead of from RAM is therefore quite small; it was the seeking that caused slowness on HDDs not really the large bandwidth required.
That could be the clearest technical explanation I've had for Superfetch - I hadn't realised it doesn't do anything that intelligent on the fly. If what you're saying is correct it just creates profiles (for different times of the day etc.) which it then loads at boot into RAM - on running a large program this is expunged but then presumably exactly the same profile (for the given time of day etc.) is loaded again into RAM after closing that program.

Hmm.. now what else to use all that RAM for? :p
 

=Wendy=

Senior member
Nov 7, 2009
263
1
76
www.myce.com
Also worth noting.
Since the superfetch cache has to be written to begin with and updated regularly. This increases write amplification.
 

FishAk

Senior member
Jun 13, 2010
987
0
0
on my ATOM netbook ...turning off superfetch made it boot faster by about 7-8 seconds.
Sounds like for the netbook it makes sense to set the service to delayed start. You would get faster boots, but still get the benefit of filling your RAM with prefetch data shortly after boot.
Since the superfetch cache has to be written to begin with and updated regularly. This increases write amplification.
With adequate spare aria and a good controller, write amplification due to superfetch is insignificant.
 

Voo

Golden Member
Feb 27, 2009
1,684
0
76
Since the superfetch cache has to be written to begin with and updated regularly. This increases write amplification.
We're talking about less than 30mb of data here and only 11mb were updated in the last few days in my windows version, so the needed write cycles are negligible.
Also why exactly would it increase write amplification compared to some other data?

@Auric: Too bad they don't explain how exactly superfetch should ever affect SSD performance negatively - I can't see any reason at all for that, after all we're only reading data from the SSD, if I'd startup the apps myself without superfetch we'd end up with the same data being read.
 

=Wendy=

Senior member
Nov 7, 2009
263
1
76
www.myce.com
My wording was bad, instead of increased write amplification, i should have said increased writes to the SSD, and they are significant enough to warrant them switching off superfetch for you. ;)

You need to start thinking outside the box.
The reason they can't say that superfetch has a negative impact on performance, is because it doesn't. They will only state that it has no benefit. Then you need to ask yourself. If it has no plus points to performance and no negatives to performance, then why go to the trouble of turning off superfetch? Why not just leave it alone?

I believe the reason they want it switched off is because they are concerned about write cycles, especially as NAND fabrication processes forever make smaller NAND which also means for consumer grade NAND, less write cycles.

If we look at MLC NAND
50nm = 10,000 write cycles
34nm = 5,000 cycles
25nm = reported to be around 3,000 write cycles for good quality stuff.

A lot of people don't think that 3,000 cycles is a problem, and say something like " i have a 100GB drive, so i can write 100GB of data per day for 3,000 days". But they forget about something fundamental. you can only write 100GB per day for 3,000 days if the drive is empty at the start of each day. If the drive has 80GB of data already on it, you can no longer write 100GB per day, if you do, that 3,000 cycles will only last 600 days.

600 days is now within most drives warranty period. oooooopssss :)

To sum up. I'd say they switch off superfetch as they don't want to add at all to the amount of data that is written to an SSD.
 
Last edited:

FishAk

Senior member
Jun 13, 2010
987
0
0
The thing about a good controller, is that if you have static data- say that 80Gb- just sitting there, and only 20Gb that keeps getting written over and over, is that the cells of the static data will be cycled out with the un-static cells. This is part of wear leveling. The “static data” doesn't stay in one spot, and over time, the hardly used cells will be traded out for those more used cells of the original 20Gb multi written cells. This is what moves your time from the 600 days, back to the 3000 days.

Superfetch does not add significantly enough to writes to warrant turning it off.
 
Last edited:

=Wendy=

Senior member
Nov 7, 2009
263
1
76
www.myce.com
The thing about a good controller, is that if you have static data- say that 80Gb- just sitting there, and only 20Gb that keeps getting written over and over, is that the cells of the static data will be cycled out with the un-static cells. This is part of wear leveling. The “static data” doesn't stay in one spot, and over time, the hardly used cells will be traded out for those more used cells of the original 20Gb multi written cells. This is what moves your time from the 600 days, back to the 3000 days.

Superfetch does not add significantly enough to writes to warrant turning it off.
Except that wear levelling itself uses write cycles to move data around. Something that SandForce learned when designing the SF series of controllers which are very selective about what it moves around and when it does this.
 

Voo

Golden Member
Feb 27, 2009
1,684
0
76
A lot of people don't think that 3,000 cycles is a problem, and say something like " i have a 100GB drive, so i can write 100GB of data per day for 3,000 days". But they forget about something fundamental. you can only write 100GB per day for 3,000 days if the drive is empty at the start of each day. If the drive has 80GB of data already on it, you can no longer write 100GB per day, if you do, that 3,000 cycles will only last 600 days.

600 days is now within most drives warranty period. oooooopssss :)

To sum up. I'd say they switch off superfetch as they don't want to add at all to the amount of data that is written to an SSD.
Superfetch adds around 10mb/day, that's just a completely negligible - sure that's estimated and I could log writes to it for a few days I assume but even it were 100mb/day, that's still absoluetely nothing.
And the advantage is RAM bandwidth/latency vs. SSDs and that's still an order of magnitude.

Also Intel usually throws their 100gb consumer writes/day numbers around (also for G2 drives) which already includes the write amplification - and that's a really conservative guess, since we all can calculate how much data we could write to a SSD with 10k write cycles and <1.1 write amplification (Intels guess for consumer uses with their controller).
But ahm how exactly did we end up at write cycles? And really, those <5gb per year wouldn't change anything even if write cycles were a concern for consumers.
 

postmortemIA

Diamond Member
Jul 11, 2006
7,721
40
91
superfetch is on, but it ignores SSD drives. so does scheduled defragmentation. in other words, enable it or disable it, it is going to ignore SSD either way. In fact, you probably can't make it fetch files from SSD.

That said, if you run Windows 7 session long enoguh, eventually data will be loaded/cached in RAM, even if you had superfetch off.


Superfetch adds around 10mb/day, that's just a completely negligible - sure that's estimated and I could log writes to it for a few days I assume but even it were 100mb/day, that's still absoluetely nothing.

I don't know where you get your numbers. on mechanic drive, superfetch will cache amount of total RAM - used RAM. Which is about 3GB for 4GB system, etc.
 
Last edited:

F1shF4t

Golden Member
Oct 18, 2005
1,583
1
71
I don't know where you get your numbers. on mechanic drive, superfetch will cache amount of total RAM - used RAM. Which is about 3GB for 4GB system, etc.

Yes it will read that much from the drive, but how much extra disk writing does enabling superfetch cause is the question. Reading from ssd does not wear it out.

I've checked superfetch status on my machines and its enabled by default, previously however it used to be dissabled by default. Not sure if the behaviour was changed in an update or something. Would make sence as there is no reason to dissable superfetch on current (indilinx, intel etc) SSDs.