Windows 2022 - Storage Bus Cache

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

Hordak

New Member
May 26, 2017
7
0
1
Hi!

I've stumbled over this article about Windows 2022 Storage Bus Cache feature and wanted to give the simple space a try. So I took my testbed and attached some SATA storage devices and installed the module and the failover clustering feature.

Code:
> Get-PhysicalDisk

Number FriendlyName           SerialNumber    MediaType CanPool OperationalStatus HealthStatus Usage            Size
------ ------------           ------------    --------- ------- ----------------- ------------ -----            ----
1      ST9160314AS            6VCYG2J9        HDD       True    OK                Healthy      Auto-Select 149.05 GB
2      Samsung SSD 840 Series S19HNSAD432819Y SSD       True    OK                Healthy      Auto-Select 111.79 GB
0      SanDisk SDSSDH2128G    130665401751    SSD       True    OK                Healthy      Auto-Select 119.24 GB
The next step was to assign devices 1 and 2 to the storage bus.
Code:
> Enable-StorageBusDisk -Number 1
> Enable-StorageBusDisk -Number 2
> Get-PhysicalDisk

Number FriendlyName           SerialNumber    MediaType CanPool OperationalStatus HealthStatus Usage            Size
------ ------------           ------------    --------- ------- ----------------- ------------ -----            ----
501    ST9160314AS            6VCYG2J9        HDD       True    OK                Healthy      Auto-Select 149.05 GB
502    Samsung SSD 840 Series S19HNSAD432819Y SSD       True    OK                Healthy      Auto-Select 111.79 GB
0      SanDisk SDSSDH2128G    130665401751    SSD       True    OK                Healthy      Auto-Select 119.24 GB
Then I created the new pool and verified the correct usage of the devices.
Code:
> Update-StorageBusCache
> Get-StoragePool

FriendlyName                         OperationalStatus HealthStatus IsPrimordial IsReadOnly      Size AllocatedSize
------------                         ----------------- ------------ ------------ ----------      ---- -------------
Primordial                           OK                Healthy      True         False      380.08 GB      170.8 GB
Storage Bus Cache on WIN-EEU9AC1KEEK OK                Healthy      False        False       169.8 GB        512 MB

> Get-StorageBusBinding

DeviceGuid                             DeviceNumber CacheDeviceGuid                        CacheDeviceNumber CacheMode DirtyByteCount TotalByteCount
----------                             ------------ ---------------                        ----------------- --------- -------------- --------------
{393170cb-2cca-a5c3-78a4-67aa495fd464} 501          {42c1a6e5-8921-24fd-681d-ce1e3b08d788} 502               ReadWrite            0 B            0 B
Finally I created a new simple volume with ReFS on the pool and assigned a drive letter.

Now the problem began. It doesn't matter what file I/O operation I used (local/shared file copy, robocopy /J, disk benchmarks, mixed patterns) the performance of the pool didn't differ then if I would use the hdd directly. Sometimes even worse.

I've tried different file system settings and played with the Storage Bus Cache settings (shared, cache, reserved bytes/%) and updated it after each change but it had nearly no effects on the I/O result.

During the tests I often executed Get-StorageBusBinding and observed the DirtyByteCount value which always was moving arround a few hundred KB only on write operations. Honestly I don't know the meaning of this value exactly but I would expect this are the data that is on the cache device and not written to the HDD yet and therefore should increase rapidly because of the huge different write speed of both devices.

Has anyone else tested this feature and could share his/her experience?
 
Last edited:

jonboy345

New Member
Jun 6, 2023
2
1
3
I saw a similar performance result by accepting the defaults. I don't see it explicitly in my notes, but I want to say that I had to specify the number of columns to be equal to the number of SSD to HDD pairs. So in my case I have 2 HDDs paired with an SSD each, so I want to say I had to create the virtual disk via powershell, with the numberofcolums arg = 2. I then formatted the disk to ReFS via Disk Manager... I think.

Interested to see if you figured this out or not. Hope this helps.