Windows Server Storage Spaces tier write-back cache, how to configure threshold that determines if write is performed on write-back cache

cacheperformancessdstorage-spaceswindows server 2012

The Storage Spaces feature included with Windows Server 2012 and the upcoming Windows Server 2016 consists of a virtual disk. In a tiered storage deployment a write-back cache is created (the default size is 1GB). There is a threshold that is configured in Storage Spaces which determines whether a particular write operation will go to the write-back cache or not. This threshold is very small and makes it so that the majority of writes do not land on the write-back cache.

As an example, let's assume that the write-back cache can achieve 500MB/s while the slower tier operates at only 75MB/s. After creating the virtual disk and creating a freshly formatted volume, it is immediately noticeable that a copy operation of a 386MB file takes longer than one second to finish on the Storage Spaces Virtual Disk. One would hope that the file would be copied in under a second assuming that the write-back cache would consume the operation, but it doesn't. Instead the storage tier detects that the write size exceeds the pre-defined threshold for writing to the write-back cache and forwards the write to the slowest tier which then takes around 5 seconds to complete. I find it disappointing that the write-back cache will not accelerate this file copy operation.

Background information can be found here:

My goal is to accelerate more write operations, not just those very small in size. Here is a list of some other software providers that have accomplished this:

If Microsoft had a way to simply allow write-deferred caching, or to modify the threshold for what is to be written to the write-back cache Storage Spaces speeds could be improved by 20-fold (according to the benchmarks provided by these 3rd party vendors).

Two questions:

1) What is the default threshold (in Kilobytes) for Storage Spaces to choose to perform writes to the write-back cache?

2) What command can be issued in PowerShell to modify the threshold so that I can instruct Storage Spaces to perform larger writes to the write-back cache?

Best Answer

There's no known threshold for that. If WBC enabled all writes will go to flash regardless of their size. The only case they go to disk bypassing flash is when flash is already full and flushing it before acknowledging newer write is pointless: latency will spike all over the roof.

Some good reading on topic:

https://blogs.technet.microsoft.com/larryexchange/2015/12/02/understand-storage-space-tiering-in-windows-server-2012-r2/

https://technet.microsoft.com/en-us/library/dn789160.aspx

I'd rather avoid third-party caching software unless they have something of a real value to bring in, like f.e. distributed DRAM write-back cache. You have to run a cluster with something like StarWind vSAN for that though as huge DRAM cache on a single server is begging for troubles.

https://www.starwindsoftware.com/caching-page

You can experiment with CSV cache but it's read-only so far.

https://blogs.msdn.microsoft.com/clustering/2013/07/19/how-to-enable-csv-cache/

Upcoming Windows Server 2016 has some optimizations here as well so worth giving it a try.

https://blog.cdemi.io/caching-and-storage-tiering-in-storage-spaces-direct/

Related Question