Intel Smart Response Technology vs Windows 10 Tiered Storage Spaces

I have used Intel’s SRT (Smart Response Technology) as a way to boost the performance of my slow spinner hard drives ever since they introduced the SSD caching technology alongside the Z68 chipset for Sandybridge in 2011. SRT works by caching heavily used data onto the speedy SSD with a fall back to the HDD at the minor cost of requiring a RAID driver on Windows boot.


The technology behind Intel’s SRT is nothing new and has been standard in the industry as a way to boost the performance of database servers. The software has been reimplemented many times in the form of flashcache, ZFS, and bcache. Not wanting to be left out of the server market, Microsoft also implemented tiered storage spaces for Windows Server 2012 by following the same concept but adding their own twist. They introduce a hot/cold tier concept where the SSD is portion is self-balancing and keeps hot data within itself for fast access.

Enthusiast’s who want their games to load fast without shelling out $$$ for a large capacity SSD were stuck with using Intel’s SRT because Microsoft never ported the tiered storage space technology to Windows 10. This was until Windows 10 build 10565 secretly introduced it without any press release.

Microsoft’s tiered storage space technology ought to be more advanced than Intel’s software based caching and should be able to replace it and perform better. My personal goal was to do that and then measure it.

Setting up a Simple Tiered Storage Space on Windows 10

It was nearly impossible to find documentation on how to set up tiered storage spaces on Windows 10. I wanted to create a setup similar to what I had in the SRT where I paired a single HDD with a SSD. In the end I pieced together two guides meant for Windows Server and created some rough instructions that need to be entered into a Powershell:

#Variables
$StoragePoolName = "My Storage Pool"
$TieredSpaceName = "My Tiered Space"
$ResiliencySetting = "Simple"
$SSDTierName = "SSDTier"
$HDDTierName = "HDDTier"

#List all disks that can be pooled and output in table format (format-table)
Get-PhysicalDisk -CanPool $True | ft FriendlyName,OperationalStatus,Size,MediaType

#Store all physical disks that can be pooled into a variable, $PhysicalDisks
$PhysicalDisks = (Get-PhysicalDisk -CanPool $True | Where MediaType -NE UnSpecified)       

#Create a new Storage Pool using the disks in variable $PhysicalDisks with a name of My Storage Pool
$SubSysName = (Get-StorageSubSystem).FriendlyName
New-StoragePool -PhysicalDisks $PhysicalDisks -StorageSubSystemFriendlyName $SubSysName -FriendlyName $StoragePoolName

#View the disks in the Storage Pool just created
Get-StoragePool -FriendlyName $StoragePoolName | Get-PhysicalDisk | Select FriendlyName, MediaType

#Create two tiers in the Storage Pool created. One for SSD disks and one for HDD disks
$SSDTier = New-StorageTier -StoragePoolFriendlyName $StoragePoolName -FriendlyName $SSDTierName -MediaType SSD
$HDDTier = New-StorageTier -StoragePoolFriendlyName $StoragePoolName -FriendlyName $HDDTierName -MediaType HDD

#Identify tier sizes within this storage pool
$SSDTierSizes = (Get-StorageTierSupportedSize -FriendlyName $SSDTierName -ResiliencySettingName $ResiliencySetting).TierSizeMax
$HDDTierSizes = (Get-StorageTierSupportedSize -FriendlyName $HDDTierName -ResiliencySettingName $ResiliencySetting).TierSizeMax 

#Create a new virtual disk in the pool with a name of TieredSpace using the SSD and HDD tiers
New-VirtualDisk -StoragePoolFriendlyName $StoragePoolName -FriendlyName $TieredSpaceName -StorageTiers $SSDTier, $HDDTier -StorageTierSizes $SSDTierSizes, $HDDTierSizes -ResiliencySettingName $ResiliencySetting  -AutoWriteCacheSize -AutoNumberOfColumns

#Alternatively try adjusting the sizes manually:
#New-VirtualDisk -StoragePoolFriendlyName $StoragePoolName -FriendlyName $TieredSpaceName -StorageTiers @($SSDTier,$HDDTier) -StorageTierSizes @(228GB,1.816TB) -ResiliencySettingName $ResiliencySetting -AutoWriteCacheSize -AutoNumberOfColumns

Benchmarks

The hard drive that I’m using in all these is a 2TB Hitachi Deskstar 5K3000 (HDS5C3020ALA632). The solid state drive that I’m using is a 250GB Samsung 850 EVO. My system is powered by a 4690K, ASUS Z87 Pro, and 32GB of RAM.

Let’s start off by just looking at the Hitachi itself by using CrystalDiskMark:

image

As shown, the Hitachi performs like any other spinning disk drive where any kind of random reads and writes suck.

Let’s take a look at what the numbers look like when we pair the Hitachi with the 850 EVO using a 64GB cache at the maximized acceleration mode with Intel RST.

image

Performance improved slightly but the cache didn’t kick in because of the nature of how RST works.

Let’s take a look at what Windows 10 tiered storage spaces can do.

image

Huge improvement there especially with regard to writes! It’s pretty clear that tiered storage spaces offer some benefit over Intel SRT for this kind of work load.


Conclusion

I haven’t had a chance to measure game load times but I’ve been running a tiered storage space system for over a year and haven’t noticed any regression with the game load times. If someone else goes through the trouble of doing this migration please do measure before and after and let me know!

Good luck!