Mea culpa! So after I originally blogged this, I went to the ReadyBoost team to find out more about possible performance issues with ReadyBoost and they were kind enough to help me troubleshoot things further. Before starting some tracing for them, though, I decided to hit WU one more time and it installed some updates (that required a restart) so I rebooted and low and behold – my suspend / resume wasn’t sluggish after the restart. I opened up Outlook, Media Player, even VPC, Word, and an instance of IE . . . I waited till things settled down – I closed the lid, waited until it was all nice and quiet and sleeping – and then I resumed it and within about 15 seconds or so – Outlook was usable and I could click ‘new’ to bring up a new email – definitely not what I was experiencing before. Did I mention I had my ReadyBoost enabled USB flash drive enabled and it was flashing and being updated while the system was usable? I have slept and resumed several more times over the last few hours and none of the resumes have been sluggish. I have to admit that this leads me to believe there is more going on here than ReadyBoost and that I probably wrongly implicated ReadyBoost as the problem with my now intermittent sluggish resumes. Stupid Heisenbugs.
I have a couple more things to investigate (which I should have probably nailed down before blaming ReadyBoost) – but now I have some folks I can work with to get this sorted . . . if the problems ever come back and I find the answer – I’ll update this blog post!
(FYI – I found a great source of information on ReadyBoost here: http://www.microsoft.com/technet/technetmag/issues/2007/03/VistaKernel )
Soo last week I finally figured out why sometimes my notebook takes forever to resume from an S3 / S4 sleep. My notebook is a Dell D820 with a Core2 Duo and 2GB of RAM – yet its brought to its knees sometimes when I resume. Did I mention I have a 2GB USB thumb drive plugged in on most days serving as a readyboost cache? For months now I’ve been noticing that sometimes when I go to resume my notebook – the disk just freaking thrashes and the HDD light stays on pretty much solid and the whole machine is pretty much unusable for about 5-8 minutes until the disk ‘settles down’. I finally last week got annoyed enough by this (and had enough free time) to investigate things. It turns out my ‘Readyboost.sfcache’ file on my USB thumb drive was being written to . . . to the tune of several hundreg megabytes per minute during the sluggish resume! OUCH. So if I close the lid on my notebook and then pull out the USB thumb drive where my *2GB* ReadyBoost cache lives, and then open the lid to resume sans ReadyBoost device – all is well, the notebook resumes and becomes responsive and usable inside of a few seconds. Hmmph . . . Here’s the deal – I learned last week that the ReadyBoost feature uses an AES 128 key that is generated once per OS start (the data in the file on the thumb drive is encrypted with this key) . . . the key isn’t persisted anywhere (i.e. it lives in memory only) and so apparently when you sleep / hibernate – the key goes bye bye and thus you need to rebuild your 2GB ReadyBoost cache on your USB disk when you reusme again. Of course Vista realizes that it needs to regenerate the ReadyBoost cache as soon as it wakes up and loads the USB drivers and realizes the ReadyBoost drive is plugged in and it starts helpfully doing this as soon as it can . . . ya know – while the OS is trying to page all that memory back into my 2GB of system RAM as well and generally restore the OS to a working state . . . sigh . . . Looks like we plan to fix this in SP1 and allow the cache to be re-used through S3 and S4 sleep states so that we don’t end up re-populating this file each time you resume a machine (if someone swipes your thumb drive then they still can’t get at the data as it will still be encrypted and if they steal your notebook AND thumb drive you’ve got bigger problems). For now I’m just going to stop using ReadyBoost until I can install SP1. It doesn’t seem to help much on a machine with 2GB of RAM anyways (every now and then – usually when I have low memory I notice it working though ) . . .