Geek Project: Speed up Windows Boot Time by Tweaking the Windows Prefetch Cache!
[NOTE: the tweak outlined in this post has been called into serious question. It seems that it has been circulating around geek sites for a LONG time, and that there is a question as to whether it is valid. There seem to be good arguments FOR and AGAINST… as with any recommendation, I tried it myself and reported my findings… which appeared to be that it worked for me… BUT, YMMV (Your Mileage My Vary)… and, it is very possible that there were other factors that caused my apparent boot time speedup (from a minute to 30 seconds.) Now, 50% better is pretty impressive… but it could have been the result of other factors rather than the registry setting itself. I suggest that you read all of Andrew’s comments following this post… check out the sites he points to… and make up your own mind, based on the points made. I DO try and keep this a “fair and balanced” guide to user helpful hints… and now back to your regular reading….]
Original Post Starts Here:
Everyone wants a faster Windows boot time, huh? Well, here’s a cool tip! Clean out your Windows Prefetch Cache! A Geek Project for you!
In Windows Explorer, navigate to C:\Windows\Prefetch
Once there, delete everything under the “Prefetch” directory. (DO THIS AT YOUR OWN RISK! I ain’t responsible! REALLY!)
Now, reboot your system. This reboot will be very slow, because it will be “rebuilding” the system’s prefetch cache again. This is because Windows needs to “relearn” the prefetch for it’s system files. Subsequent boots will be MUCH faster! However, the Winodws Prefetch cache will soon “fill up” again as you use the system and it’s applications. Sooooo… let’s keep that from happening!
We will need to edit a registry key to fix that. (If you aren’t comfortable editing the Windows Registry, don’t do it… call your friendly local geek and show him this article!) If you are “down wit'” doin’ it… go for it! Open Regedit and browse to this Registry Key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
Under this key you should see a value named: EnablePrefetcher
It has 4 possible values:
0 – Disabled : The prefetch system is turned off.
1 – Application : The prefetch only caches applications.
2 – Boot : The prefetch only caches boot system files.
3 – All : The prefetch caches boot, and application files.
Now, keep in mind, we don’t want to disable the prefetch entirely! This would actually make system boot times much longer! This is because this feature is used to speed up the loading of Windows boot files. So, let’s pick the number 2 option. It allows us to keep the advantage of caching Windows system files, without filling up the prefetch with application data.
Set the value to 2 and reboot your system. The next time that you boot it will be MUCH faster! Cool, huh? So, do this and, like me, you could do from over a minute in Windows boot time to 30 seconds! Very, very cool! You can also defrag your hard drive… that will help too!
Cool! Controversy! I love it. So, in my podcast, when I said that my boot time went from 1 minute to 30 seconds, that was wrong? Fascinating! And, if M$ made the “2” setting available and explained that it “prefetched” only the boot files, that was wrong? Why have “2” then? Anyway, as usual, Windows “tweaking” is “religious”… what works for you, works… or it doesn’t. “Your Mileage May Vary” (YMMV)… so if you don’t wanna do it… don’t! If you want to experiment, and it does work for you… great! (I am SO easy goin’!)
OK… it seems Andrew is on a personal “mission from God” to correct the urban legend of the prefetch cache. Man! I can picture you scouring the ‘net looking for anyone that posts this with the glee of correcting the idiots that post it. Yeesh! Anyway, I HAVE found that this is very, VERY controversial… there are posts that would seem to support both positions on various well respected performance geek sites. People report (like me) that it DID actually seem to boost boot time… BUT, was it really due to the registry setting… or, was it because of clearing out the prefetch directory that MIGHT have had prefetch files there that are no longer needed to be there… from programs that have been un-installed, and deleted? I don’t know. My experience was real… but it appears that the registry setting could be bogus. However, I did find this link from Microsoft’s site about Windows XP EMBEDDED that states the purpose for the various numbers:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xpehelp/html/xetskdisablingprefetch.asp
Again, this is EMBEDDED not “regular” XP, or XP Pro… so who knows. I will amend the post to clarify the “hint” as being what it appears to be… a tremendous geek controversy. Wow.
OK… a few minor points, and then, I believe, we can end the “back and forth” on this one:
A) I DO care that we present good information to our readers on “Dr. Bill -The Computer Curmudgeon.” And, if, in retrospect, I am wrong, then I am wrong. That’s OK, I have over 27 years in the computer industry and I am long past needing to prove anything. Maybe that’s why I am a curmudgeon.
B) I do try and present any information on the Blog in a humorous and/or “tongue-in-cheek” tone, because that’s my style… sorry if that offends anyone. Offense is not what I intend.
C) It is true, I did not read ALL your links… and perhaps I should have… OK, I admit it. Confession is good for the soul. I did read several, and searched on the issue throughout many web sites, and found various statements both ways, as I said. That is why I said that there appeared to be “controversy.” Controversies do not imply that there is no actual “right or wrong,” just that there are many opposing viewpoints. In fact, there are many “controversial” things that are based in issues that DO have a true “rightness” about them… if that makes sense.
D) I defer to you, Mark Russinovich, and Ryan Myers… I am changing the value in my registry after I type this comment.
Everyone, listen closely… change your value back… and now, I back slowly and quietly out of the room.
Three words for ya: “Windows is stupid.” There ya go. I just took all those experts and shoved them down the drain since my linux laptop with old hardware boots in 30 seconds. :p
If you actually read the Windows XP Kernel Improvements on “prefetch”, it defines.. wait for it… “prefetching“. Whoa. what a concept. In reality, there’s not too much you can do with Windows bootup or performance management except for turning off services, and tweaking the pagefile settings. There’s a couple others that I do on my work laptop, but all in all. You’re never going to get the 10 second boot. Mainly because the way Windows is written, it’s more important to show you the GUI and pretty screen before you can do something, than actually let you do something. That’s why network comes up as one of the last loaded even if you’re starting to launch applications. It’s stupid, but blame XP kernel dev team. If you’ve never tried it: try launching a network app like putty right when it boots. I bet dhcp still hasn’t loaded when you try it.
Yes, its working…… my system used to take 5 minutes for booting up (why I dont know) but now it is taking only 1-2 minutes.
Thankssssss
SHEESH, just use Linux, then you won’t have this problem at all eh?? ;-))