Caching is an ideal way to maximize an investment in solid state disk (SSD), especially in virtual environments where massively random I/O patterns are the norm. Caching provides an automated way to make sure that the most active data is being serviced from the fastest possible storage device. As a result, several caching techniques have appeared on the market that may confuse organizations looking to invest in a cached SSD tier to improve virtual machine (VM) response time. In this article, Storage Switzerland will compare two of these techniques: Server Side Caching and RAID controller caching.
What is Server Side Caching?
While both server side caching and RAID controller caching both occur in the physical server, server side caching generally means a software-based approach to caching at the server layer. In other words, this technique has a software component that is either installed at the hypervisor layer or in the virtual machine itself. This software will automatically cache the most recently accessed data or specific data that the storage manager has selected on to a drive form factor SSD or PCIe SSD installed in the host server. Doing so lessens the burden on the storage network and the shared storage devices.
What is RAID Controller Caching?
A RAID controller is typically a card that is installed in a server that can connect to multiple disk drives and aggregate those drives to provide data protection through one or multiple of the various RAID algorithms (RAID 0, 1, 10 being the most common). Modern RAID controllers will also provide some additional capabilities like snapshots, compression or even deduplication.
These controllers have always had caching capabilities but it was typically a very small cache (less than 64Mb) and based on DRAM not flash. Increasingly though, flash controllers are adding the ability to support an onboard flash drive or flash module to significantly increase the amount of cache memory that they can take advantage of. This new generation of RAID controllers is called a Cached RAID Controller.
When selecting which type of caching implementation to use, organizations are often faced with selecting between these two options. While they perform a similar function, accelerating hot data, they have stark differences that can impact the enterprise.
Cache Flexibility
The first key difference is cache flexibility. Most Cached RAID Controllers require that the flash storage be on-board the controller itself. While this provides the controller with direct access to the cache, it does limit the number of choices that the storage manager has to select from. Often there is no choice; the flash must come from the controller vendor.
A software based, server side cache on the other hand, typically can work with any type of flash that is accessible by the server. This can mean a PCIe SSD or drive form factor SSD inside the server. This also means that the same software can create multiple caches on multiple devices regardless of location. It can even be a shared SSD implemented in the SAN. It can then use that cache to support any I/O stream (block or file) with which the system interacts with.
A Cached RAID Controller can only cache volumes that it directly controls and this means the specific exclusion of a fibre channel attached or network attached storage system.
While there may be some latency reduction when caching on the RAID controller, the benefit would be minimal compared to a software based cache leveraging a PCIe SSD. Even if a drive form factor or SAN attached flash is used by the caching software, the latency impact would be minimal and not noticeable by most applications. Again with the ability to cache multiple volume types and locations, the software cache can create a hierarchy of caching to balance investment cost against real-world acceleration delivered.
Cache Capacity
A direct benefit of the cache flexibility of software based server side caching is how much capacity can be given to the caching function. A cache is only effective if the majority of hot data is being read from cache instead of a hard disk. The capacity of the cache directly impacts the hit/miss ratio. While larger than their early DRAM caches, cached controllers typically can only support one or two on board cache modules. Software based caches have no practical limits since they can access and aggregate flash storage from PCIe, drive form factor SSDs and shared SSD.
Application Awareness
Another way to optimize cache hit/miss ratios is to be more intelligent in how the available cache storage is used. While limitless capacity is a nice option, it is also expensive. Ideally there should be a balance between cache size and cache intelligence.
The best way for the cache to gain this intelligence is by being aware of the application it is accelerating. In the virtualized environment, that means being able to isolate VMs to specific cache volumes or even pinning the entire VM to cache. It also means having an understanding about how the environment lays out data and how that data is accessed.
Initial Implementation
One theoretical advantage of a cached RAID implementation is that there should be no additional software to install other than the drivers for the controller. A software based server side cache, on the other hand, requires installing software on the host. How much “easier” a controller is to install depends on the situation. For example, most IT planners don’t foresee the need for cache at the point of server implementation. The reality is, most environments will need to incrementally add cache at some point in time following initial implementation. This means that the initial RAID controller will need to be replaced with a new cached controller. That means powering down the server, installing the new card and potentially installing new drivers.
Compare this to a software cache, which would need to be installed but would not require the powering down and opening of a server. In fact in some cases, a reboot is not even required.
The only advantage that a cached controller might have is if the server was being pre-ordered with a cached RAID controller and if there was no need to cache networked volumes. Otherwise the implementation of a cached RAID controller could actually be more difficult.
Performance Impact of Cache
Another theoretical advantage of a cached RAID controller is that the actual cache processing is done “on-board”. This means that no host CPU and memory resources have to be used to perform the data analytics required to determine which data should be in cache and which should not. These resources are also used to perform the actual data copy from the hard disk layer to the cache layer.
How impactful this may be is largely dependent on the application itself. For most environments it should be negligible since most typically have more than enough CPU resources sitting idle.
Conclusion
Deciding between a cached RAID controller and software based server side cache is really quite easy. Software based server side cache has numerous advantages in terms of flexibility, capacity and efficiency at the possible expense of a more difficult install and slight performance overhead. A work around of the install and performance overhead can make these negligible. Software based caching is the ideal choice for most environments.
Intel is a client of Storage Switzerland
