ExpressCache intelligently and automatically combines the best attributes of SSDs and HDDs without any effort or pre-requisite knowledge from the user, so users get the best of both worlds; dynamic performance and scalable capacity. Since SSDs as small as 4GB can be used, it provides an incredibly affordable solution for manufacturers.

Comprised of User mode and Kernel Mode components, ExpressCache uses the SSD as an intelligent cache, coupled with an HDD, to improve overall system performance and greatly speed up Windows PC startup, application launches and data access speed.

However, this product is OEM only!

I looked for alternatives, without any success... I cannot understand this: It sounds like a great idea, no additional hardware is needed, and it could really boost the disk performance without spending a fortune.

So, I'm asking if anyone knows any software that does this, either for Windows or Linux. Or if you think this is a bad idea, I'd like to know why.

Note: ReadyBoost is not really suitable for this. It is built with the assumption that disk writes are really expensive, has very little effect on systems with plenty of RAM, and does not scale properly if your SSD is 100GB+.

PrimoCache (for Windows) can do this; it specializes in using RAM as a cache, but can use an SSD partition as L2 cache -- I do not believe it's limited in size, and it says it can speed up boot times even (assuming you're using an SSD and not just RAM).
–
BrainSlugs83Oct 27 '14 at 3:43

9 Answers
9

There are several ways to use an SSD as a cache for your regular hard drive. This is not a new idea, and already has several implementations.

In Windows:

The best implementation is by NVelo: Dataplex - It has read caching and optional write caching. Unfortunately, like ExpressCache it is available to OEMs only. The cheapest way to get it is to buy an OCZ SSD which packages a PCIE adapter with a small SSD and uses the dataplex software to cache your existing harddrive.

There are however, pure software implementations too: FancyCache - It works like you might expect performing read and write caching at the block layer. It primarily exists as a memory cache, but recently has gained support for a second layer SSD cache (a bit like the ZFS L2ARC), which can be arbitrarily large.

If you are just looking to max out on IOPS at the cost of write durability (perfectly fine in conjunction with a UPS for example), an alternative might be something like: SuperCache - This will use RAM only, no SSD. But unlike the others, will happily exceed 100,000 IOPS on commodity hardware. Very useful for caching the block device containing database indexes for example. Essentially giving RAM-Disk like performance for any sized volume (assuming the underlying device can keep up with the write volume).

In Linux, things are a bit nicer:

As a previous poster mentioned, you have Flashcache - It works rather well, but its performance varies greatly with your workload. In many cases with poor access locality it will not perform as well as you might expect. Not sure why that is, but for most workloads this is a great option.

The best option (though the code is still not quite "production ready") is bcache (more information here, though some of if is outdated) - It has the best performance of any SSD cache I have yet tried, and unlike all the other options mentioned supports caching multiple block devices on a single cache. It also supports (though I haven't personally tried this, it may not work yet) multiple cache devices, so you can use multiple cheaper SSDs for maximising your IOPS. The code is in a git repository: git://evilpiepirate.org/~kent/linux-bcache.git. There is talk of merging it into the next kernel release, though it hasn't yet been decided for sure.

Personally I find the best performing option is bcache (my workload is mostly database related, though I also cache my main laptop in its entirety). In my experience the sequential write throughput of the HDD is often the bottleneck, as the cache fills up fast and the HDD needs to write the cached sectors, so the faster the better. This is of course for a write heavy workload, in a more balanced read-write workload things will likely be different.

I should also warn you, that at full speed, you will burn through the write limits of your SSD fairly quickly. I'm currently on my third OCZ Vertex 3. SSDs though very very fast, are simply not very durable, so expect to replace them every few months.

Thank you for the great answer! As for the "burnout" rate, I think now this is the main reason most of these products are OEM-only, e.g. OCZ Synapse (Cache SSD bundled with Dataplex) is 50% overprovisioned...
–
haimgFeb 22 '12 at 20:29

@haimg Yeah the burnout rate is a bit abysmal at the moment. Hopefully this will improve with time, but still despite that, I think its well worth £120 every 3-6 months to go from around 120 to around 20,000 IOPS. As long as you backup frequently or simply preemptively replace the SSD every 3 months everything should be fine. Sadly the SMART data does not predict remaining lifetime at all (at least on OCZ SSDs), so be careful about trusting that.
–
SuperciliousFeb 22 '12 at 23:32

1

@Supercilious Why not just use an SLC or eMLC SSD? That must be more efficient (and certainly more dependable) than frequent replacement of unreliable MLC flash.
–
Miles EricksonMay 23 '12 at 3:12

@MilesErickson The current generation of SATA III SSDs are already fast enough at random IOs to saturate the bus, and significantly cheaper than the enterprise grade SSDs. There would be no advantage to the enterprise SSDs aside from slightly greater longevity, but I haven't calculated the IOPS/$ cost to compare them.
–
SuperciliousMay 23 '12 at 6:38

5

@Supercilious This is where you're losing me. Slightly greater longevity? The longevity of SLC and eMLC flash is orders of magnitude greater, not slightly greater.
–
Miles EricksonMay 24 '12 at 0:12

Probably the best effect you'll achieve by installing the entire OS and software on SSD, while storing bulks of data on your HDD.

If your SSD is small, then it could be useful to put a pagefile on it. I doubt Windows will put much of your files to cache, but, at least, it will allow you to have recent-used applications memory and files cache in RAM, while allowing for fast switching to not-so-recent used applications (which will reside in pagefile which is, in turn, on SSD).

My SSD is 120GB. While this is enough for a working set or cache, it is definitely not enough to host all my system files + apps. Secondly, I don't want to keep, say, MSSDK sample code (read seldom) on SSD and my own code which gets accessed 100 times a day, on disk. Moreover, I'd need two SSDs for RAID -- I never trust my data to just one disk, be it magnetic or solid state...
–
haimgFeb 15 '12 at 16:24

2

You can use symbolic links and move MSSDK / Windows installer cache / etc to your hard drive (while having symbolic links pointing to new locations from the required paths on your system drive); and put your own code on SSD (the portion of it that needs fast random access). And using a backups would probably be better solution than to rely on RAID.
–
penarturFeb 16 '12 at 4:15

2

+1 for this solution. Actually using an SSD will yield far better performance. There's unlikely to be significant benefit from yet another level of cache whereas using an SSD for your system partition will.
–
JesseFeb 22 '12 at 19:05

1

I'm using ssd for system files and hdd for home folder. I've noticed that hdd is a bottle neck then you need to read a lot of files from it, f.e. fire fox first start after boot.
–
aisbaaFeb 17 '13 at 8:45

One can use the Windows I/O technologies of ReadyDrive and ReadyBoost. Because these technologies date from before SSDs were introduced, there is little information on whether they do work with SSD or how well.

ReadyDrive is a feature of Windows Vista that enables Windows Vista or later computers equipped with a hybrid drive or other Flash memory caches (such as Intel Turbo Memory) to boot up faster and resume from hibernation in less time.

One can also put the page file on the SSD, although with limited expected improvement if your system memory is sufficient.

The best improvement will come, as remarked by penartur, from installing Windows on the SSD. Although one should keep in mind that SSD failure-rate is much higher than traditional hard disks.

eBoostr is an application that caches large parts of regularly used applications in order to speed up your system. Typically it is meant to use USB drives or unused RAM but there is no real reason you can't use an SSD instead.

It is available for all major versions of Windows and sounds a lot like what you are after.

eBoostr tracks the use of applications on your system and can pre-cache data of the ones most frequently used, this reduces load
delays and optimizes performance

Easy to use drag-and-drop interface allows you to selectively enhance applications on your system as well as prioritize applications
enhanced by eBoostr

Reduced load times and less hard drive access help prolong battery life of laptops and netbooks using eBoostr

FancyFlash did the job. I have my own Hyper-V R2 server @home for my labs and I got a OCZ Revo Hybrid PCIe drive. Unfortunatly, the build in cache driver only works with Windows 7. No plan for Windows Server 2008 R2. So I installed the FancyFlash driver on my Hyper-V Host and configure my SSD on Revo Hybrid to act as cache for the 1tb embedded disk (where my VHD are). TaDa! Works and accelerate my VMs a lot! :)

I wonder if he meant "FancyCache" (now known as PrimoCache)? -- It was in beta (and the final price unknown) about the time this answer was posted (IIRC). But it's been two years and he has a 21 point score, so I doubt he'll ever log in again and tell us. :-/
–
BrainSlugs83Oct 27 '14 at 4:05

While it is certainly possible to load an entire operating system and applications on a single SSD, you probably shouldn't. Over time, SSDs slow down by continuous re-writing and should be "refreshed" to speed them back up. You are better off using the fastest hard disk you can find, such as a SATA 600 Gbps drive and get a motherboard or other controller that supports SSD caching at the hardware level. The Asus ROG Maximus motherboards all support this function built-in.

However, until I build this new system, I have found a way to gain some benefit from an SSD. I built a memory cache on the SSD and even though there is one on my main hard drive, Windows seems to automatically use the faster SSD instead. I also moved all of my Internet Explorer cache to the SSD, which has sped up surfing and internet video at least 2 or 3 times.

I will be building my new system around the Asus Maximus VI Hero motherboard with a 4th generation Intel i7 processor in the 1150 socket format. Seems to be a good level of performance without spending thousands to get there. Total cost is projected to be in the $800-900 range, to include a new version of Windows.

ExpressCache is an OEM product only. I am reasonably certain that it has internal controls preventing it from being used on hardware other than the licensed OEMs.

It seems that right now, FancyCache is the only viable tool for general use/non-oems. I may misunderstand things, but I would think that something like readyboost on an SSD would burn through its write cycles pretty fast. To me, the idea here is to only have one drive letter to cover the main HDD and the SSD, putting the most commonly accessed and generally static files on the SSD and storing the less commonly used and often modified files on the hard drive. This would give the performance benefit of an SSD and the long-term viability of a HDD and not require the user to have to be trying to balance space on the SSD with that of the HDD. The need for this is so obvious, at least to me, that I am stunned at the lack of solutions for this need.