Understanding CBRC (Content Based Read Cache)

vSphere 5 CBRC feature has been to certain extent discussed on the Internet and few bloggers have found and published some information about it. William Lam has published New Hidden CBRC (Content-Based Read Cache) Feature in vSphere 5 & for VMware View 5?, and also commented on the New vSphere VMware ESXi 5.0.0 GA VSISH Configurations. Few other posts describing CBRC have also surfaced, like this one here from Greg Carriger.

In many ways, storage remains one of the largest costs for supporting VDI deployments, perhaps after Microsoft licensing. Reducing and containing storage infrastructure costs while scaling out VDI deployments is a critical benefit towards massive VDI adoption.

Storage vendors over the last couple years have been changing their discourse and pricing methodology; from dollar per gigabyte to dollar per IOps. In my article Get hold of VDI IOPs, Read/Write Ratios and Storage Tiering I discussed the importance of understanding the virtual desktop IO pattern in VDI deployments. On the same article I briefly discussed the I/O split between Replicas and Linked Clones. I recommend reading the articles above mentioned for a better understanding of how and why IOs are so important, especially in VDI deployments.

The graph below demonstrates Windows during boot time.  You should observe a gigantic peak on read IOs during boot time.




The CBRC feature is already baked into vSphere 5 and VMware View administrators are expecting it to be integrated with VMware View in the future. CBRC will help address some of the performance bottlenecks and the increase storage cost for VDI. CBRC is a 100% host-based RAM-Based caching solution that help to reduce read IOs issued to the storage subsystem and thus improves scalability of the storage subsystem while being completely transparent to the guest OS.

The feature has been primarily designed to help with read-intensive I/O storms, such as OS boot and reboot, A/V scans, and administrators should expect to see significant reduction in peak read I/O being issued to the array for these workloads.




There are two components to the cache:

  1. The In-Memory Cache – This is configured by the administrator and has a fixed maximum size of 2GB and default of 400MB memory reservation. This is a dynamic cache – It loads blocks on demand and manages the cache based on access patterns of the various blocks on the vmdk.
  2. A digest/metadata table that is maintained on disk for each vmdk disk on the host. The metadata holds information about the various blocks on the vmdk. It can be imagined as a hash table with each hash entry pointing to a particular block.

Putting 1 and 2 together, if there is a read request to a particular block on the vmdk, a hash value is computed and the in-memory cache is checked to see if the block is present. If it is not present, the hash table is accessed and the appropriate block is loaded into the in-memory cache. If the block is already in-memory, it is returned back to the user.

The additional memory taken up by CBRC itself is treated as a ‘regression’ as far as memory consumption goes. Since memory requirements are not as high for CBRC for steady state workload vSphere characterize and reduce memory consumption.

CBRC will benefit VDI environments without intelligent arrays and cache management. However, for arrays with read or read/write cache management CBRC will also help to reduce IO latency in the storage fabric. Because read IOs are served from in-host RAM there is no requirement to go out to the network to retrieve data blocks. Additionally, data blocks are retrieved to to the guest in terms of microseconds, instead of milliseconds. This IO performance improvement will be clearly noticed by end-users while using their desktops on a day-to-day basis; but remember that write IOs are still the majority of the IOs during steady state workload. A common estimative is that write IOs represent anywhere between 50% to 80% of the total number of IOs. Go ahead and read my article How to offload Write IOs from VDI deployments for a better understanding on how to handle write IOs more eficiently.

CBRC can run 100% independent from VMware View, solely using technology available in vSphere 5 (this has been identified by William Lam here). This approach allows other VDI brokering solutions compatible with vSphere 5 to leverage the technology without modifications to the product or solution. Dan Brinkmann has put CBRC to the test with Citrix XenDesktop here.

A special thanks goes to Narasimha Krishnakumar for helping me with information for this post.

This article was first published by Andre Leibovici (@andreleibovici) atmyvirtualcloud.net.



20 pings

Skip to comment form

    • Tom on 04/01/2012 at 11:42 am

    I had heard CBRC wasn’t supported for VMware View. Is this true?

  1. @Tom
    You are correct, VMware View 5.0 does not currently support CBRC. Unfortunately, I am not in a position to comment on VMware View product roadmap.


    • larstr on 04/02/2012 at 4:40 am

    CBRC is not officially supported by VMware View. That does not mean it’s not working.


    • Tom on 04/02/2012 at 9:13 pm

    CBRC is on by default though. So this means that unless people are turning it off, any View deployment on ESXi is unsupported, correct?

    • TDwiek on 04/03/2012 at 6:58 pm

    Hi Andre,

    Do you know if CBRC can also be used with host based SSD such as a PCIe card or the like? Or is it just limited to server DRAM for now?



  2. @TDwiek
    CBRC is a 100% host-based DRAM-Based caching solution.
    No SSD or Nand devices are supported for CBRC today.


    • Pranesh on 04/07/2012 at 7:23 am

    Hello Andre,

    How is CBRC different from TPS(Transparent Page sharing)

    • fula on 04/10/2012 at 9:38 am

    @Andre Leibovici Is it far fetched to assume that all the pieces are in place to eventually support CBRC on SSDs (preferably PCIe for lower latency). I realize maintaining proper support for all the infrastructure features (vMotion, DRS,etc…) is probably the challenging aspect. However since so many companies are providing PCIe based caching solutions, it seems to me that eventually VMWARE will subsume such functionality… What do you think the likelihood of that happening is?

  3. @fula
    I don’t think the feature was designed with this purpose, however I don’t know how much effort would be involved to modify the feature set. I would like to be able to answer to your question but I am not across the CBRC plans to support NAND devices.


  4. @Pranesh
    TPS (Transparent Page Sharing) very simplistically, look for common memory blocks in RAM and collapse them to reduce the total used memory footprint. Other techniques are also used to reduce the amount of used memory such as ballooning and compress.

    CBRC uses a reserved (up to 2GB) amount of host memory to store the most accessed storage data blocks. This allow for faster retrieve of the data block when a guest VM request that specific block. CBRC reduce storage fabric latency moving the most accesses data closer to the guests.

    I hope that helps you.


    • Will on 09/20/2013 at 1:54 pm

    Anyone have more recent experience with XenDesktop 5.6 or 7 and CBRC? Have a possible case study or two coming up.

  5. Will, as far as I know CBRC is only supported by Horizon View.


    • Will on 09/23/2013 at 12:22 pm

    You are correct. I know the only “supported” configuration is with View 5.1. I’m just wondering if anyone (besides Dan Brinkmann) has this working with XenDesktop.

    • VMware announced View 5.1, plans to deliver seamless apps via PCoIP and full desktops via HTML5 « vResource.net on 05/02/2012 at 5:30 am

    […] features, there’s not a lot new for View 5.1. The main new thing is that vSphere’s Content Based Read Cache is now available for View, (though with desktops they call it “View Storage […]

    • Sizing for VMware View Storage Accelerator (CBRC) « vResource.net on 05/02/2012 at 12:02 pm

    […] reading this article I recommend the read of couple of my previous posts Understanding CBRC (Content Based Read Cache) and Understanding CBRC – RecomputeDigest […]

  1. […] est la fonctionnalité majeure de cette release mineure. Elle s'appuie sur la fonctionnalité CBRC (Content Based Read Cache) de l'hyperviseur qui permet d'optimiser les I/O disques sur la baie et ainsi réduire les […]

  2. […] additional information  I recommend you reading my two previous articles Understanding CBRC (Content Based Read Cache) and Understanding CBRC – RecomputeDigest Method. I also have a Storage View Accelerator Deep Dive […]

  3. […] you are not familiar with View Accelerator, read about it in my previous articles Understanding CBRC (Content Based Read Cache) and Understanding CBRC – RecomputeDigest […]

    • Handling peak I/O demand for Hyper-V and VMware View | UP2V on 06/09/2012 at 7:10 am

    […] serie of very good blogposting on Storage Accelerator are written by Andre Leibovici Understanding CBRC (Content Based Read Cache) View Storage Accelerator Performance […]

  4. […] Understanding CBRC (Content Based Read Cache)  Understanding CBRC – RecomputeDigest Method Related Posts:How to configure the View 5.1 VMware View Storage AcceleratorVMware View 5.1 releasedOptimizing Storage with View Storage AcceleratorWhat’s New in View 5.1Understanding how storage design has a big impact on your VDI Filed Under: VMware, VMware View Tagged With: CBRC, Storage Accelerator […]

  5. […] the View 5.1 Administrator configuration. Some details on CBRC can be found on MyVirtualCloud (here) and the VMware EUC blog […]

  6. […] about CBRC or View Storage Accelerator? I would argue that View Storage Accelerator isn’t of much importance anymore in this […]

    • Vows Renewed: vSphere 5.1 & View 5.1 Now Compatible - Eck Tech on 10/26/2012 at 6:35 am

    […] something about the CBRC (content-based read cache) in ESXi causing part of the problem.  The CBRC is a feature in the hypervisor that enables the View 5.1 feature called the View Storage […]

    • Site Recovery Manager / Boot Storms / IOPS & VMware View Storage Accelerator (CBRC) | Charles Gillanders on 11/09/2012 at 7:10 am

    […] Understanding CBRC (Content Based Read Cache) […]

  7. […] Understanding CBRC (Content Based Read Cache) […]

  8. […] Read Cache). If you are not familiar with View Accelerator, read about it in my previous articles Understanding CBRC (Content Based Read Cache) and Understanding CBRC – RecomputeDigest Method. The IO reduction provided by CBRC average 65%, […]

  9. […] the introduction of VMware View Storage Accelerator (find more about it here) in View 5.1 and having the most common data blocks across all desktops in a host being serviced […]

  10. […] Well that’s what CBRC offers and disrupted the straight forward strategies of storage arrays offering disk tiering. Of course this was a positive disruption and a true requirement in the industry (http://myvirtualcloud.net/?p=3094) […]

  11. […] CBRC help address some of the storage performance bottlenecks and the increase of storage cost for VDI. CBRC is a 100% host-based RAM-Based caching solution that helps to reduce read IOs issued to the storage subsystem and thus improves scalability of the storage subsystem while being completely transparent to the guest OS. VMware tests have identified a boot storm reduction of approximately 80% on peaks IOPS, ~45% on average IOPS, ~65% on peak throughput and ~25% on average throughput. For additional information I recommend you reading my previous article Understanding CBRC (Content Based Read Cache). […]

  12. […] If you are not familiar with CBRC find out more here. […]

  13. […] Understanding CBRC (Content Based Read Cache) […]

  14. […] greater end-user experience.   Here are few of the blog posts I wrote on CBRC technology: Understanding CBRC (Content Based Read Cache), Understanding CBRC – RecomputeDigest Method, Sizing for VMware View Storage Accelerator […]

Leave a Reply