Cluster Shared Volume Caches Test

Cluster Shared Volumes (CSV) Cache, also known as CSV Block Cache, is a feature which allows you to allocate system memory (RAM) as a write-through cache.

The CSV Cache provides caching of read-only unbuffered I/O. This can improve performance for applications such as Hyper-V, which conducts unbuffered I/O when accessing a VHD or VHDX file. That means that the server will cache virtual hard disk reads in RAM and hit that RAM instead of accessing the more latent disks on which the CSV is stored. Unbuffered I/O’s are operations which are not cached by the Windows Cache Manager. What CSV Block Cache delivers is caching which can boost the performance of read requests, with write-through for no caching of write requests.

If enough memory is not allocated to the CSV block cache, then the cache reads will significantly drop, virtual hard disk reads will rise, and consequently, VM performance will deteriorate. If this is to be avoided, then administrators should continuously track cache usage, detect ineffective usage, and fine-tune the cache configuration so as to optimize cache usage and enhance VM performance. This is what the Cluster Shared Volume Caches test helps administrators achieve!!!

This test monitors the CSV Block Cache and reports the number and rate of reads from the cache. By keeping an eye on these usage metrics over time, administrators can proactively detect a consistent drop in cache hits, investigate the reasons for the same, and promptly initiate measures to improve cache usage and safeguard VM performance.

Target of the test : A Hyper-V / Hyper-V VDI server

Agent executing the test : An internal agent

Output of the test : One set of results will be reported for every CSV on the server

Configurable parameters for the test
Parameter Description

Test Period

How often should the test be executed.

Host

The host for which the test is to be configured.

Measurements reported by the test
Measurement Description Measurement Unit Interpretation

Cache read rate

Indicates the rate at which data is read from the cache.

KB/Sec

A consistent drop in the value of this measure could indicate a bottleneck in read request processing by the cache. Check whether adequate memory is available to the cache for servicing the read requests it receives. If not, increase the value of the BlockCacheSize cluster property to ensure that sufficient memory is available to the cache at all times. This property allows you to define how much memory (in megabytes) you wish to reserve for the CSV Cache on each node in the cluster. If a value of 512 is defined, then 512 MB of system memory will be reserved on each node in the Failover Cluster.

Cache reads

Indicates the number of times read requests were serviced by the cache.

Number

A steady decrease in the value of this measure is a cause for concern, as it indicates that cache misses are on a rise. This in turn may cause VM performance to deteriorate. To avoid this, check whether the BlockCacheSize cluster property has been set right. Typically, this property has to be set after considering the level of I/O activity on the cluster. Where there is a high level of read activity, sufficient memory should be available to the cache, so that cache reads are always high. In such environments, you may want to increase the value of the BlockCacheSize property.

Cache usage can also be optimized using the EnableBlockCache property. This is a private property of the cluster Physical Disk resource. It allows you to enable/disable caching on an individual disk. This gives the flexibility to configure cache for read intensive VMs running on some disks, while allowing to disable and prevent random I/O on other disks from purging the cache.