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:
- https://technet.microsoft.com/en-us/library/dn387076(v=ws.11).aspx#bkmk_wbc
- https://social.technet.microsoft.com/Forums/en-US/e6868c95-2f6a-4433-a012-174cadba13cd/windows-server-writeback-cache-storage-tier-how-do-you-configure-the-threshold-for-how-many
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:
- VirtuCache: http://virtunetsystems.com/virtucache-overview/
- Intel CAS: https://software.intel.com/en-us/articles/intel-cache-acceleration-software-a-primer
- PrimoCache: (write-deferred caching mode) https://www.romexsoftware.com/en-us/primo-cache/index.html
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?