Post by George Crump (thank you)
Server side caching has gained a significant amount of attention over the past few months, since EMC decided to offer PCIe cards that, combined with software, can cache data locally. The concept of caching active storage data on solid state disk (SSD) inside the server offers benefits in terms of performance improvement. That improvement may come at a large budget expense, however, when the server side caching technique is deployed broadly in a data center. Network caching is an alternative to consider for broadly accelerating storage I/O performance across multiple servers.
Why Server Side Caching?
The stated goal of server side caching makes sense; identify the most active data and move it to a high speed storage device, typically a PCIe SSD, installed in the server. Doing so should remove any latency caused by the storage network for data that is in cache. However, there are several challenges to this approach that need to be considered before investing in it.
Challenges to Server Side Caching
Lack of Efficiency
The first challenge to implementing a data center wide, server side caching strategy is the lack of efficiency. Installing a PCIe SSD into every server, or at least those with performance-critical applications, can be a long and disruptive process. While the size of PCIe SSD cards can vary, the smallest card tends to be about 100GB and the largest, now over 1TB. They are the most cost effective on a per GB basis when the maximum capacity is purchased on each board. But the reality is that most performance sensitive servers don’t need a large amount of performance capacity and, in most cases, 100GB is more than enough.
In many PCIe SSD implementations a large portion of total SSD capacity goes either under-utilized or is incorrectly utilized. In these cases, SSD storage, that is as much as 15X the cost of the equivalent mechanical hard drives, sits empty. Under-utilization of any resource is an issue but the waste of premium priced solid state storage can only be classified as inexcusable.
That said, incorrect utilization is an even bigger concern. PCIe SSD are installed to accelerate performance, which means they should store the data requiring high speed access. They should not store the data that won’t be accessed frequently or does not need to be accessed rapidly; that’s what less expensive hard disk drives are for.
While most PCIe caching solutions will get around the under-utilization problem by filling the cache to its maximum, they can do nothing to fix the incorrect utilization problem. A cache will take the most active data and store it on the PCIe device, filling it almost to the limit. The problem with this approach is that if the PCIe card is oversized, this cached data may never be accessed. Once again the flash memory goes to waste, as this high speed resource is filled with relatively stale data.
Lack of IP Storage Caching
Another challenge for server side caching technologies is that they typically only accelerate block storage protocols that are based on SCSI, like fibre channel or iSCSI. This is a problem since many data centers are now counting on NFS to be their workhorse protocol, hosting many Oracle database instances and serving as a foundational component of large scale server and desktop virtualization rollouts. NFS though, like any other protocol, suffers when storage performance isn’t at its peak and many server side caching solutions simply cannot help.
Point Performance Problems Only?
A potentially bigger problem for server-side caching solutions is whether they’re able to improve performance broadly across a data center. While many workloads can benefit from some of SSD’s capabilities, not all can justify the expense of a complete PCIe solution. As stated earlier, not all workloads have a large active data set. Many would benefit by as little as a few GBs of high speed storage. The result is that server side caching solutions are often used only for the servers that “need it most” and the other systems are left struggling with hard drive based performance.
What Problem Does Server Side Caching Really Solve?
Storage performance bottlenecks occur in three critical areas; on the network, at the storage controller and at the device. As these bottlenecks are encountered, the components must either be upgraded or the bottlenecks worked around. Server side caching is an example of one such work around. It can help reduce the I/O burden on each of these bottlenecks by reducing the amount of data that goes through the bottlenecks, since the most active data is stored on the PCIe SSD inside the server. The result is that most reads are served from cache and the I/O never even leaves the server. This reduces I/O both on the network and on the storage device.
Compared to network caching, the only unique benefit to server side caching though is its ability to reduce the network bottleneck, which in many cases is the least expensive bottleneck to upgrade. It’s also often the one that is already in the budget to be fixed as 10GbE rollouts are now commonplace.
Read on here