VMware Host Side Caching to improve the performance of HP MSA Storage
VirtuCache is ESXi software that automatically caches ‘hot’ data from any SAN storage to in-host SSD or RAM. By doing so it improves the storage performance of VMware VMs, without requiring you to upgrade your storage appliance or network.
VirtuCache competes and also complements Hybrid MSA’s internal Read Caching and Performance Tiering features, and the All-Flash MSA. For instance, the Read Caching and Performance Tiering features in hybrid MSA only improve VM read performance,1 VirtuCache improves the performance of VM reads and writes. Or that VirtuCache helps improve the performance of small block storage IO even for the high-end All-SSD MSA. Here are a few more ways VirtuCache enhances the performance of HPE MSA.
SSD in the ESXi host will perform better than SSD in the appliance. In the case of VirtuCache, the SSD is right on the motherboard of the VMware host CPU that consumes hot data. Versus in the case of MSA, where the SSD is behind the shared storage network and storage controllers.
VirtuCache caches reads and writes, whereas MSA’s Read Caching and Performance Tiering caches/tiers VM reads only.1
You can cache to host RAM or NVME / PCIe SSD with VirtuCache. Both these options are much higher performing than the Seagate SAS SSDs that Hybrid and All-Flash MSAs use.
Controller bottleneck results in high latencies for small block IO. Even if you have HPE’s highest performing all-flash MSA and you are still experiencing high VM latencies, it’s most likely that the MSA controller is choked because your application is doing large amounts of small block read / write IO. HP MSA controllers don’t use x86 processors that are now standard in storage appliances, instead they use a RAID controller processor, that are lower performing than x86 processors (thus also making the MSA cheaper than other appliances). This processor chokes with large amounts of small block IO because small block IO is CPU intensive.2 Now VirtuCache uses ESXi host CPUs for caching operations, and not storage appliance processors. As a result, VirtuCache has access to larger amounts of CPU, than the MSA, which in turn makes it very effective in accelerating small block IO.
1 – Pages 5 and 6 of this document (https://h20195.www2.hpe.com/v2/getpdf.aspx/A00015961ENW.pdf?) mention that the MSA has SSD read cache, and 4GB read+write memory cache. So there is no ability for the MSA to write to SSD, it does use the 2GB of RAM on the controller for caching writes, but this is grossly inadequate since your storage utilization is possibly in tens of terabytes and so you’d need cache capacity in TBs to achieve a high cache hit ratio.
2 – Three reasons why small block IO is CPU intensive: Firstly, the block size is small, so VMs can issue large amounts of small block IO quickly (compared to large block size IO). Secondly, whether the block is 1MB or 4KB, the same number of storage appliance processor cycles are used to process the block. Now if the IO is random, it further aggravates storage appliance processor usage since large amounts of metadata needs to be scanned to read / write random blocks.