How to place SuperFetch cache on an SSD?

11

4

I'm thinking of adding a solid state drive (SSD) to my existing Windows 7 installation.

Kingston 30GB SSD

I know I can (and should) move my paging file to the SSD:

Should the pagefile be placed on SSDs?

Yes. Most pagefile operations are small random reads or larger sequential writes, both of which are types of operations that SSDs handle well.

In looking at telemetry data from thousands of traces and focusing on pagefile reads and writes, we find that

  • Pagefile.sys reads outnumber pagefile.sys writes by about 40 to 1,
  • Pagefile.sys read sizes are typically quite small, with 67% less than or equal to 4 KB, and 88% less than 16 KB.
  • Pagefile.sys writes are relatively large, with 62% greater than or equal to 128 KB and 45% being exactly 1 MB in size.

In fact, given typical pagefile reference patterns and the favorable performance characteristics SSDs have on those patterns, there are few files better than the pagefile to place on an SSD.

What I don't know is if I even can put a SuperFetch cache (i.e. ReadyBoost cache) on the solid state drive.

I want to get the benefit of Windows being able to cache gigabytes of frequently accessed data on a relativly small (e.g. 30GB) solid state drive. This is exactly what SuperFetch+ReadyBoost (or SuperFetch+ReadyDrive) was designed for.

Will Windows offer (or let) me place a ReadyBoost cache on a solid state flash drive connected via SATA?

A problem with the ReadyBoost cache over the ReadyDrive cache is that the ReadyBoost cache does not survive between reboots. The cache is encrypted with a per-session key, making its existing contents unusable during boot and SuperFetch pre-fetching during login.


Update One

I know that Windows Vista limited you to only one ReadyBoost.sfcache file (I do not know if Windows 7 removed that limitation):

Q: Can use use multiple devices for EMDs? A: Nope. We've limited Vista to one ReadyBoost per machine

Q: Why just one device? A: Time and quality. Since this is the first revision of the feature, we decided to focus on making the single device exceptional, without the difficulties of managing multiple caches. We like the idea, though, and it's under consideration for future versions.

I also know that the 4GB limit on the cache file was a limitation of the FAT filesystem used on most USB sticks - an SSD drive would be formatted with NTFS:

Q: What's the largest amount of flash that I can use for ReadyBoost?
A: You can use up to 4GB of flash for ReadyBoost (which turns out to be 8GB of cache w/ the compression)

Q: Why can't I use more than 4GB of flash? A: The FAT32 filesystem limits our ReadyBoost.sfcache file to 4GB

Can a ReadyBoost cache on an NTFS volume be larger than 4GB?

Update Two

The ReadyBoost cache is encrypted with a per-boot session key. This means that the cache has to be re-built after each boot, and cannot be used to help speed boot times, or latency from login to usable.

Windows ReadyDrive technology takes advantage of non-volatile (NV) memory (i.e. flash) that is incorporated with some hybrid hard drives. This flash cache can be used to help Windows boot, or resume from hibernate faster.

  • Will Windows 7 use an internal SSD drive as a ReadyBoost/ReadyDrive/SuperFetch cache?
  • Is it possible to make Windows store a SuperFetch cache (i.e. ReadyBoost) on a non-removable SSD?
  • Is it possible to not encrypt the ReadyBoost cache, and if so will Windows 7 use the cache at boot time?

See also

Ian Boyd

Posted 2011-02-23T18:47:56.727

Reputation: 18 244

Why? Placing SuperFetch/ReadyBoost/Paging on the SSD is the opposite of what the SSD is made for... – Tamara Wijsman – 2011-02-25T20:15:46.120

6The idea is to have an SSD serve as a dynamic hierarchical cache frontend to a much larger, slower, cheaper drive pool. The goal would be to utilize readyboost/superfetch in such a way that a user would get the feel and benefit of SSD speeds for the most frequently used [SSD-sized] amount of data, no matter what it happened to be at the time (i.e. dynamic and self tuning). Having to manually rotate my desired "fast apps" between SSD and magnetic disk is not acceptable. Neither is the idea that I must get an SSD large enough to house all my infrequently accessed data. – None – 2011-08-15T01:28:54.873

Have you seen hybrid drives, such as the Seagate Momentus XT? – Joel Coehoorn – 2012-10-12T21:05:51.570

Answers

3

Turns out you cannot put a ReadyBoost cache on an SSD.

When you initially format the drive, and assign it a drive letter, you are given the option to place a ReadyBoost cache on the drive.

But on subsequent reboot, the ReadyBoost driver reports in the event log:

The device (Unknown Unknown) will not be used for a ReadyBoost cache because the ReadyBoost driver is attached to its volume stack.

Full log entry:

Log Name:      Microsoft-Windows-ReadyBoost/Operational
Source:        Microsoft-Windows-ReadyBoost
Date:          3/2/2011 10:55:28 ᴩᴍ
Event ID:      1022
Task Category: ReadyBoost
Level:         Information
Keywords:      (16384)
User:          SYSTEM
Computer:      Harpax
Description:   The device (Unknown Unknown) will not be used for a ReadyBoost cache because the ReadyBoost driver is attached to its volume stack.

Even though a ReadyBoost would be useful for a computer running on spinning platters, ReadyBoost seems to limit itself to storage devices connected to the slow USB port.

Ian Boyd

Posted 2011-02-23T18:47:56.727

Reputation: 18 244

2Yeah, from what I've read, Readyboost is just hack to get better performance out of low spec machines like netbooks with only 1 GB of RAM. Once you have 2GB of RAM or more, it serves no purpose and may actually slow you down, because USB drives are so slow. If you want to increase the speed of windows, first you should max out the motherboard for RAM, and then get an SSD. I find that even with spinning platters my Windows 7 machine is extremely fast as long as I have 4+ GB of RAM. – Kibbee – 2012-10-12T20:39:23.937

8

Disable ReadyBoost. Make your SSD your primary / boot drive, and / or make sure your pagefile is on it. ReadyBoost is just a secondary buffer for stuff - if your pagefile is fast enough you don't need to use ReadyBoost.

Even if you can't make the SSD your boot drive, you can still tell Windows to use the SSD for your page file. Either way it eliminates the need for ReadyBoost.

Joshua

Posted 2011-02-23T18:47:56.727

Reputation: 4 290

1"if your pagefile is fast enough you don't need to use ReadyBoost" - Sorry but ReadyBoost and the pagefile have nothing to do with each other. The pagefile holds pages of private virtual address space that the OS has decided can be removed from RAM for a while; such data is largely created by programs as they run. ReadyBoost otoh simply provides additional space for SuperFetch to work in. SF repurposes low-priority "Standby" RAM to cache the contents of frequently-accessed files; it never caches the sort of data the pagefile holds, and the pagefile doesn't provide space for SuperFetch. – Jamie Hanrahan – 2018-06-24T09:26:42.457

1i cannot make the SSD my primary/boot drive - it's not large enough. Plus i don't want to reinstall Windows. Plus that's not my question. – Ian Boyd – 2011-02-23T19:14:13.013

1@Ian - It's the correct advice, however. There is NO reason to use an SSD as anything BUT a boot drive outside of an enterprise server environment, you're wasting your money and hamstringing yourself. You seriously can't get a functioning windows install with your main applications in a 120GB partition?! EDIT: That said, if you insist on wasting your drives like this, just put the pagefile on it. With preemptive fetching it'll be more than fast enough that you won't even miss ReadyBoost functionality. – Shinrai – 2011-02-23T19:43:59.150

1Assuming i could fit Windows, Program Files, and User profiles on a 80GB partition; the real thing i want on an SSD is the 40GB game. But not all of the game i play, only the few gigabytes that i actively use from a dozen data files. Caching that data in a ReadyBoost file is ideal. i can accept your answer if someone is willing to pay the $500 difference for a larger SSD. You want to cut me a cheque? – Ian Boyd – 2011-02-23T20:19:12.147

2You're assuming that ReadyBoot would cache the data you want cached on the SSD. That's not necessarily the case. If there's only a handful of files/folders from a game that would benefit from being on an SSD, use symlinks to migrate them over to the SSD. (Most of your user profile would sit on the HD as well, like Documents/Pictures/Videos/etc.) – afrazier – 2011-02-23T20:37:59.987

2@Ian, even if you don't have it as the primary / boot drive, you can still specify the location of the windows pagefile. Either way ReadyBoost is not necessary once you are running with an SSD :) – Joshua – 2011-02-23T21:09:14.843

1@Josh WoW's 40GB of game data would benefit from being cached on a SSD. – Ian Boyd – 2011-02-23T21:12:07.400

@afrazier Windows creates the user profiles folder on the system drive; i wouldn't change that. (i've done it before, with less than satisfactory results). i'm fine with manually placing torrents, games, and movies on a secondary drive - but i would absolutely keep Windows, Users, Program Files, ProgramData, Program Files(x86) at their default location. All of that is moot, i'm not reinstalling Windows - my question is about adding a SSD drive to a existing Windows 7 installation, and if it's possible to use a SSD for ReadyBoost. – Ian Boyd – 2011-02-23T21:13:08.863

2@Ian Boyd - Well, I hope somebody can answer your question (I really have no clue). Clearly some of us feel that even if it's possible you should be aware that this is The Wrong Choice™, though. – Shinrai – 2011-02-23T21:44:42.050

1@Ian: you can relocate many of the profile folders (documents, pictures, downloads, etc.) through their properties dialogs – afrazier – 2011-02-24T00:09:25.837

@afrazier Moving pictures, documents, and downloads to an SSD drive is a waste of its talents. – Ian Boyd – 2012-04-14T17:55:43.827

@Ian The comment was made with the assumption that your profile was on the SSD and you're relocating the larger folders to a traditional HD. – afrazier – 2012-04-15T12:23:10.887

2

Look at motherboards that support Intel's Rapid Storage technology. It allows the use of a SSD as a cache for your magnetic/spindle hard drive.

Keltari

Posted 2011-02-23T18:47:56.727

Reputation: 57 019

I had since looked into it; and turns out my motherboard doesn't support it. The SouthBridge does, but the motherboard is missing some sort of glue that makes it enabled. – Ian Boyd – 2014-10-22T15:03:01.747

That very well might be a good idea. Since the SSD already is plugged into the motherboard, and it is a "newer" motherboard, it might work. Although, i would certainly prefer the ease of having Windows SuperFetch manage such work. – Ian Boyd – 2012-04-14T17:57:03.577

0

> put a SuperFetch cache (i.e. ReadyBoost cache) on the solid state drive.

From http://technet.microsoft.com/en-us/magazine/ff356869.aspx :

Windows 7 use the Windows SuperFetch algorithm to determine which files should be stored in the cache. SuperFetch monitors files that users access (including system files, application files, and documents) and pre-loads those files into the ReadyBoost cache. All files in the cache are encrypted using 128-bit AES if the flash storage device is removable, but hardware manufacturers can choose to disable encryption on internal, non-removable ReadyBoost devices. Because the ReadyBoost cache stores a copy of the files, the flash drive can be removed at any point without affecting the computer-Windows will simply read the original files from the disk.

> cache is encrypted with a per-session key, making its existing contents unusable during boot and SuperFetch pre-fetching during login

There's mention here about disabling compression and encryption of ReadyBoost.

Also, there are parameters for EnableCompression and EnableEncryption, but no specifics on how to add this to your registry or GroupPolicy to make it stick. Not sure if disabling encryption would keep your SuperFetch.

Sun

Posted 2011-02-23T18:47:56.727

Reputation: 5 198