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 树存储在主机内存中,并在基于 FPGA 的 SmartNIC 上执行 SCAN 和 GET,同时在 CPU 上执行 PUT、UPDATE 和 DELETE。这种方法使大容量存储变得容易,并简化了 FPGA 实现,但也提高了通过缓慢的 PCIe 总线进行数据访问和同步的挑战。我们描述了 Honeycomb 如何通过谨慎的数据结构设计、缓存、请求并行性和乱序请求执行、无等待读操作、以及 CPU 和 FPGA 之间的批处理同步来克服这一挑战。对于读重量级的 YCSB 工作负载,Honeycomb 将最先进的有序键值存储的吞吐量提高了至少 1.8 倍。对于云存储启发的扫描重负载,Honeycomb 的吞吐量提高了 2 倍以上。在这些工作负载上,性价比(对于大规模部署更为重要)提高了至少 1.5 倍。