Mark Mokryn, VP Product

Storage technology has always presented difficult challenges in computer architecture: just a few years ago, when hard drives were the predominant technology, their low I/O performance was a huge challenge to application performance. The way to improve application performance was to avoid disk I/O, and especially random I/O, whenever possible. Today, with SSDs having become mainstream for high performance apps, the situation is flipped: how can applications take advantage of the enormous I/O capabilities of flash? And how can applications make efficient use of flash resources, considering their high expense?

Databases are the largest application category today for high performance flash usage in the data center. Both relational and NoSQL databases today use “key-value” (KV) storage engines: the data is indexed by “keys” and stored as “values”. KV engines typically enable variable-sized keys and values, and this presents computational challenges: how can one effectively store, retrieve, and manage variable-sized data on top of devices with a fixed block size, such as HDDs and SSDs? While not computationally challenging over a hard drive with 100 IOPS (I/Os per second), it is extremely challenging over an SSD capable of 500K IOPS, not to mention in a system with numerous such devices.

Moreover, flash is very expensive when compared to hard drives. In addition, its performance and endurance are limited by the number of writes. Therefore, there is strong motivation to compress flash-resident data. At the high IOPS capabilities of flash, not only is the compression computationally expensive, but so is the task of managing the compressed data, which is no longer of a fixed block size due to compression. Thus, even generic block I/O, when compressed, appears as variable-sized KV.

Therefore, key-value storage on flash is ubiquitous in nature, from database storage to any application’s compressed block storage. Due to the high IOPS capabilities and demands, CPUs today spend tremendous resources on KV storage, to detrimental effects on real application performance. The industry is in need of new architectures to crack this conundrum. Flash storage cannot be treated with the same computational tools that were used for hard drives.

What if I told you that there was a way to resolve this?  

An emerging class of hardware accelerators will ensure KV stores achieve an order of magnitude increase in price/performance and scaling!

Key-Value Storage Inefficiencies

As noted earlier, it is challenging to efficiently store variable-sized KV data on devices with fixed block sizes. The data must be indexed, which for high data capacities often entails very high memory utilization. The data must be maintained in the presence of deletions and over-writes, which is extremely challenging under high IOPS, and causes high write and read amplification. This I/O amplification means that for every byte written or read, the storage subsystem must write or read numerous bytes due to overhead and maintenance of the on-disk data structures. The compression and decompression involved also take a high toll on CPU utilization. The storage subsystem is often challenged between various tradeoffs:

  • High memory utilization for fast data accesses, versus low memory utilization with slow data access
  • High write amplification for efficient space management, versus low write amplification while wasting space
  • Large data containers that lower memory utilization, but cause high read amplification and waste of flash space, versus fine grained object mapping which is difficult to maintain

The above was far easier when handling hard drives with about 100 IOPS. However, SSDs with 500K IOPS each are a huge challenge to manage effectively. Existing software solutions simply cannot keep up. The fast growth of networking bandwidth, with 100Gbps mainstream, enables hungry applications to consume huge amounts of data, thus contributing to this problem. On the other hand, CPU performance is stagnating, and memory costs are still very high.

The Storage Solution: Hardware to the Rescue

Simply put, dedicated hardware engines running data-intensive workloads are the best long-term solution to the problems caused by skyrocketing I/O requirements and data size, and slowing compute performance growth. By offloading key-value storage, along with its associated inefficiencies, to an optimal architecture on a dedicated hardware device, the Pliops Extreme Data Processor (XDP) reduces data management to near-optimal levels and improves performance many times over.  XDP also minimizes CPU utilization to a small percentage of what typical software solutions demand.

What about computational storage?

Most computational storage companies today are focused on providing compute power to storage. This is often in the form of putting CPU cores or FPGAs close to the storage. Essentially these are mostly platform plays, enabling end customers such as top cloud providers to develop their own technology to handle their storage needs. Pliops, on the other hand, is providing an end-to-end computational storage solution.

For example, our first offering is for block storage. It appears as a standard block device such as an SSD from a software perspective, but the underlying technology is our KV processor. Because we focus on providing solutions and not requiring the customer to develop anything custom, XDP can benefit nearly any application that stores data on SSDs.

Companies of any size can take advantage of Pliops technology with no changes required to their existing applications or system architecture.  And because Pliops works with any SSD, you can continue to buy SSDs from the vendors you use today.

The Pliops Extreme Data Processor (XDP) – the technology behind the solution

The Pliops XDP is a hardware-enabled key-value engine in a PCIe add-in card form factor that optimizes a broad range of workloads. We deliver a highly optimized, reliable, scalable storage system that can provide 10X faster performance and 100x improved response time with less than half the storage.

By accelerating compute-intensive functions and eliminating bottlenecks, PSP holds the key to unlocking the value of increasingly denser, faster SSDs. Enabling more efficient processing puts an end to wasted storage – and allows you to take full advantage of your flash storage investments.