Server-Based Caching to Accelerate Enterprise Applications

Date:   Tuesday , December 10, 2013

Increased server performance, higher virtual machine density, advances in network bandwidth, and more demanding business application workloads create a critical I/O performance imbalance between servers, networks, and storage subsystems. Storage I/O is the primary performance bottleneck for most virtualized and data-intensive applications. While processor and memory performance have grown in step with Moore\'s Law (getting faster and smaller), storage performance has lagged far behind, as shown in Figure 1. This performance gap is further widened by the rapid growth in data volumes that most organizations are experiencing today. For example, IDC predicts that the amount of data volume in the digital universe will increase by a factor of 44 over the next 10 years.

While business applications continue to put more and more usable data at the fingertips of those who need it most, organizations are also generating, capturing and purchasing new data at exponential rates. All this data creates an opportunity for improved efficiency and more powerful business intelligence, while at the same time contributing to application performance issues.

The recent Storage Acceleration and Performance Technologies study by the Taneja Group* noted that 42 percent of respondents reported I/O performance causing unresponsive applications or application failures. Storage performance negatively impacting IT efficiencies, including maximizing server virtualization initiatives and meeting service level agreements (SLAs), were identified by half of all respondents as top drivers for deploying storage acceleration technologies.

SSD Caching

The introduction of SSD cache has created an opportunity for accelerating enterprise applications because the combination of flash\'s speed, capacity, and price fills the gap that exists between spinning disk and RAM. The purpose of SSD-based caching is to address the I/O performance gap by reducing I/O latency and increasing IOPS performance. Any enterprise caching solution under consideration should be easy to deploy, be OS/application transparent, support caching on individual servers as well as multi-server clusters, including support for highly virtualized environments and clustered applications. It should maintain existing SAN data protection and compliance policies, and deliver benefits across the widest range of applications in the enterprise. Today, there are three main approaches to SSD caching in networks: array-based caching, caching appliances, and server-based caching. While SSD may be implemented as media for primary storage, it\'s still relatively expensive and potentially cost prohibitive, whereas flash used as cache is more cost effective if deployed by targeting specific workloads to be accelerated.

Storage Array-Based SSD Caching

Initial deployments of SSD caching were delivered by installing SSDs/PCI-flash cards, along with the required software and firmware functionality within shared storage arrays. Due to the plug-compatibility of early SSDs, these initial implementations did not require extensive modifications to existing array hardware or software and, in many cases, were available as upgrades to existing equipment.
Applying SSD caching to improve performance inside storage arrays offers several advantages that closely parallel the fundamental advantages of centralized network-attached storage arrays. Advantages include efficient sharing of valuable resources, maintenance of existing data protection regimes, and providing a single point of change where network topologies and related procedures need not change.

However, adding SSD caching to storage arrays requires upgrading and, in some cases, replacing existing arrays (including data migration effort and risk). Even if all of the disk drives are upgraded to SSDs, the expected performance benefit is not fully realized due to contention-induced congestion latency at over-subscribed network and array ports. The performance benefits of SSD caching in storage arrays may be short-lived and caching may not scale smoothly. The initial per-server performance improvements are likely to decrease over time as the overall demands on the arrays and storage networks increase with growing workloads, and with physical server and virtual server attach rates.

Caching Appliances

Caching appliances are network-attached devices that are inserted into the data path between servers and primary storage arrays connected to a SAN switch. Like array-based caching, appliances share relatively expensive and limited resources, but do not require upgrades to existing arrays. Because these devices are independent of the primary storage arrays, they can be distributed to multiple locations within a storage network to optimize performance for specific servers or classes of servers.

Also in common with arrays, however, caching appliances are vulnerable to congestion in the storage network and at busy appliance ports. The appliance approach offers better scalability than array-based caching because it is conceptually simple to add incremental appliances into a storage network. However, each additional appliance represents a large capital outlay, network topology changes, and single point of failure outages.

In contrast to array-based caching, appliances are new elements in the enterprise IT environment and require changes to policies, procedures, run books, and staff training. In addition, bus and memory bandwidth limitations of the industry-standard components at the heart of most caching appliances restrict their ability to smoothly scale performance. Given that these appliances sit in-band on shared network storage links, infrastructure architects and managers have grounds for concern about the real-world scalability of these devices.

Server-Based Caching

The final option for SSD caching placement is at the server edge of the storage network, directly attached to I/O intensive servers. Adding large caches to servers with high I/O requirements places the cache closest to the application and in a position where it is insensitive to congestion in the storage infrastructure. The cache is also in the best position to integrate application understanding to optimize overall performance. Server-based caching requires no upgrades to storage arrays, no additional appliance installation on the data path of critical networks, and storage I/O performance can scale smoothly with increasing application demands. As a side benefit, SSD caching in servers effectively reduces the demand on storage networks and arrays. This demand reduction improves storage performance for other attached servers, and can extend the useful life of existing storage infrastructure.
While the current implementations of server-based SSD caching are very effective at improving the performance of individual servers, however, providing storage acceleration across clustered server environments is beyond their reach, and limits the performance benefits to a relatively small set of single server applications.

Several serious drawbacks exist with server-based SSD caching, as currently deployed, including:

�Creating silos of server-captive cache resources prevents sharing of expensive SSD resources, making for a much more expensive solution to achieve a specified performance level.
�Complex layers of driver software increase management and maintenance requirements, increase interoperability risks and can consume server processor and memory resources.

One emerging solution leverages the existing SAN by transparently implementing a new form of caching SAN adapter to accelerate performance without any change to the rest of the storage infrastructure. This unique solution merges caching intelligence with SAN adapter technology to boost performance of clustered applications by moving the caching intelligence into the adapter. Implementing a shared caching architecture with other SAN adapters with this technology breaks the server-captive cache model and delivers the benefits of server-based flash/SSD performance acceleration to clustered application configurations � those most widely used for business critical applications today.

The new approach guarantees cache coherence and eliminates potential cache corruption by establishing a LUN cache owner to which all cache requests are directed. The LUN cache owner monitors the state of every cache and is updated as to any changes as they occur. Because only one SSD card is ever actively caching a LUN, and all other members of the accelerator cluster process all I/O requests for that LUN through that LUN cache owner, all storage accelerator cluster members work on the same copy of data. Cache coherence is guaranteed without the complexity and overhead of coordinating multiple copies of the same data.
By clustering caches and enforcing cache coherence through a single LUN cache owner, this implementation of server-based caching addresses all of the concerns of traditional server-based caching.