In-memory ordered key-value stores are an important building block in modern distributed applications. We present Honeycomb, a hybrid software-hardware system for accelerating read-dominated workloads on ordered key-value stores that provides linearizability for all operations including scans. Honeycomb stores a B-Tree in host memory, and executes SCAN and GET on an FPGA-based SmartNIC, and PUT, UPDATE and DELETE on the CPU. This approach enables large stores and simplifies the FPGA implementation but raises the challenge of data access and synchronization across the slow PCIe bus. We describe how Honeycomb overcomes this challenge with careful data structure design, caching, request parallelism with out-of-order request execution, wait-free read operations, and batching synchronization between the CPU and the FPGA. For read-heavy YCSB workloads, Honeycomb improves the throughput of a state-of-the-art ordered key-value store by at least 1.8x. For scan-heavy workloads inspired by cloud storage, Honeycomb improves throughput by more than 2x. The cost-performance, which is more important for large-scale deployments, is improved by at least 1.5x on these workloads.
翻译:内存中的有序键值存储是现代分布式应用程序的重要构建块。我们提出了 Honeycomb,一种混合软件和硬件系统,用于加速面向读取的有序键值存储上的工作负载,为包括扫描在内的所有操作提供了线性化。Honeycomb 在主机内存中存储 B-Tree,并在基于 FPGA 的 SmartNIC 上执行 SCAN 和 GET,在 CPU 上执行 PUT、UPDATE 和 DELETE。这种方法可以实现大型存储并简化 FPGA 实现,但也带来了跨慢速 PCIe 总线的数据访问和同步挑战。我们描述了 Honeycomb 如何通过仔细的数据结构设计、缓存、带有乱序请求执行的请求并行性、无等待读操作以及 CPU 和 FPGA 之间的批量同步来克服这个挑战。对于面向读取的 YCSB 工作负载,Honeycomb 将一种最先进的有序键值存储的吞吐量提高了至少 1.8 倍。对于受云存储启发的扫描重负载,Honeycomb 将吞吐量提高了 2 倍以上。对于这些工作负载,成本性能提高了至少 1.5 倍,这对于大规模部署更为重要。