VMware vFlash Read Cache was introduced in vSphere 5.5 and continue to be present in vSphere 6.x. It allows to leverage local SSD in each host as a cache. Note that no extra VIBs need to be installed on ESXi host or no other software. All the necessary modules are built-in the ESXi 5.5 and higher. In this post we will look at How to configure and How to Determine VMware vFlash Read Cache Block Size (VFRC).
But VMware is moving forward with new Framework called VAIO. VMware VAIO stands for “vSphere APIs for IO Filtering”. It’s a new API framework technology present in vSphere 6.0 (6.0 U1 more precisely) allowing vendors to present capabilities for caching and replication to individual VMs. It’s a framework, not feature. VAIO can be used not only caching but also for replication. Check further details in my post about VAIO Framework here.
But let's get back to VFRC which is present, it's bundled in vSphere at no extra costs. Let's explain some further details. Each local SSD configured for vFRC is formatted with special formatting with new filesystem called VFFS (Virtual Flash File System). This VFFS spans the cluster and forms a flash resource which can get consumed by VMs as a read cache.
Advantages of using vFRC is pretty obvious but in short it lowers application latency because the read requests instead of going all the way down to the storage, across all the physical network controllers, storage network, storage controllers, spinning media… they just go to the vFRC to be acknowledged. It’s possible to use PCIe cards or Solid State drives (SSDs) with SATA, SAS and PCI Express interfaces.
vFRC is compatible with vMotion, HA, DRS…
- Always migrate the cache contents
- Do not migrate the cache contents
While the activation of the vFRS per host(s) is quite simple, the block size determination isn’t so obvious. And depending of the block size the performance gets better (or not). We will look at both in this post.
You might wonder how to configure a host, or multiple hosts for vFlash Read Cache?
Step 1. First enable the vFlash Read Cache on single host. Select host >Manage Tab > Virtual Flash Read Cache Resource Management > Add capacity
Then select available SSD , check the box and click OK
After few minutes you’ll see that in the the device backing empty space area your SSD will appear, and you’ll see the capacity informations and the file system used – VFFS.
You can check the Flash Read cache resource availability through the Summary Tab.
For multiple hosts you can follow this video from VMware
How to determine the vFRC Block Size?
To actually configure the Block size it’s done on per-VM level (per VMDK actually !!! ) as the workloads runing in each VM are different so the block size is different for each VM as well. You will need a VM with virtual hardware 10 at least (vSphere 5.5).
Quote:
Having the optimal cache block size is critical to overall perform ance of vFRC. Because the metadata structures for vFRC are indexed by cache block size, the metadata footprint size depends on the cache block size. For good performance, vFRC places its metadata in the memory and therefore the cache block size has a direct correlation with memory usage. The higher the cache block size, the lower the amount of metadata is required for indexing those blocks and therefore results in a smaller memory footprint. Consequently, a smaller cache block size consumes a bigger memory footprint.
The best way to choose the best cache block size is to match it according to the I/O size of the workload. VscsiStats may be used to find the I/O size in real time when running the workload. This utility outputs an IOLength histogram that can be used to find the most dominant I/O size of the workload. The cache block size of vFRC can be configured to match this value. In general ,
vFRC performs better if the cache block size either matches or is less than the I/O size of workloads. Find out more in the VMware communities message.
Run
/usr/lib/vmware/bin/vscsiStats -l
to get the VMs WorldGroup ID – in our case its 701464
Then start the vSCSI tool
/usr/lib/vmware/bin/vscsiStats -s -w <world_group_id>
shot:
After about 30 minutes vscsiStats will stop running… You can start it once again if you need to monitor during longer period…
/usr/lib/vmware/bin/vscsiStats -p <histo_type> [-c]
Few things to take in mind:
- It’s only write-through mode (read only) at the v 1.0 of vFRC
- The minimum supported block size is 1KB and the maximum supported block size is 1,024KB.
- The Virtual Flash Read Cache is granularly allocated on a per-VMDK basis.
-
The default Virtual Flash Read Cache configurable maximum size is 200GB, but a 400GB total maximum is supported
-
To use a 400GB cache working set, the host’s advanced settings values require the modification of VFLASH.MaxCacheFileSizeMB to 409600 and VFLASH.MaxDiskFileSizeGB to 16384
-
There is a threshold mechanism that is set to 90 percent of utilization. When the cache fill percentage reaches threshold, the eviction process is triggered
Monitoring via CLI:
esxcli storage vflash cache stats get –m <module> -c <cache file name >
What If I want to configure the host swap to SSD and use the same SSD drive?
Host will be swapping only if it used all the other memory optimization techniques are used already – Transparent page sharing (TPS), Memory ballooning, Memory compression. But it can still happens if you heavily overcommit your memory. So you can do both, configure the SSD to partly use the space for vFRC and partly for Host cache. This is useful as you can allocate some small amount of SSD to host caching if you have hosts with RAM heavily overcommitted.
Select host > Manage > Settings > Virtual Flash Host Swap Cache configuration. I hope that this article was helpful and you have found what you have been looking for.
DEMARQUE says
Hi, it seems that Enterprise Plus licence is required to enable this feature, I can not test right now, can you confirm ?
Note: To use vSphere Flash Read Cache, you need Enterprise Plus Licensing
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2058983
Vladan SEGET says
It’s written in the KB… Yes, Ent. Plus.
Roman says
Hi Vladan,
Thank you for this post!
Have you came across this issue with vFRC in vSphere 5.5 / 6.0 – https://kb.vmware.com/kb/2136867 ?
Vladan SEGET says
Not really as the post was written as a lab post only. Not even a POC. Thanks…
gordon says
Does this work with Horizon View?
Hoang Anh says
Yes, it work for View 6.2 as our deployment.
Tejas P says
Just a note that VFRC is deprecated in ESXi 7. So far we (Virtunet Systems) are the only host side caching software for ESXi 7.0
Here is a link on how our VirtuCache software compares with VFRC https://virtunetsystems.com/vmware-vfrc-vflash-read-cache-competitor-virtunet-virtucache/
Also to answer the previous question, VFRC doesn’t support Linked Clones or Instant Clones and hence it won’t support persistent and non-persistent VDI. The only exception is if you use full clones for VDI
Disclosure – I am a SE for Virtunet
Vladan SEGET says
Hi, thanks for the comment. Yes, the post is old.