NBJL 2020论文导读12: FlatStore: An Efficient Log-Structured Key-Value Storage Engine for Persistent Memory


崔立骁  


论文下载地址https://dl.acm.org/doi/abs/10.1145/3373376.3378515

论文信息:  

发表于 ASPLOS 2020

作者信息

Youmin Chen, Youyou Lu, Fan Yang, Qing Wang, Yang Wang, Jiwu Shu

Department of Computer Science and Technology, Tsinghua University

Beijing National Research Center for Information Science and Technology (BNRist)†

The Ohio State University


  1. 论文摘要

最新的硬件,比如持久性内存(Persistent Memory, PM)以及告诉网卡,允许搭建高性能的KV存储。然而,文章观察到KV存储中小字节粒度的访问模式与PM硬件(Optane DC PM)的存储粒度不匹配,导致现有的KV存储无法充分利用PM的硬件带宽。论文提出了FlatStore,在PM上使用log-structure技术,在DRAM上建立易失性索引,减少KV存储对PM的小字节粒度访问,达到高带宽和低延迟。FlatStore使用了:1compact Oplog,优化批处理效果;2pipelined horizontal batch,减小batch带来的延迟增加。在易失性索引方面,FlatStore分别尝试了CCEH hash表以及masstreeFlatStore可以达到35Mops/s的写吞吐,比现有工作提升2.5-6.3倍。


  1. 论文内容

建立在PM上的持久性KV存储没有充分利用硬件的性能,现有的工作大多在PM上维护全部或部分索引,此外,KV item的大小集中与几十到数百字节,元数据操作和KV item的写入都不符合PM硬件的访问粒度。以Optane DC PM为例,硬件粒度为256B,小于256B的访问无法充分利用PM的带宽。论文提出FlatStore,,主要思想是将索引与内存存储引擎解耦,在DRAM建立索引结构,减少元数据操作对PM的小粒度写入,而在PM上使用Log Structure管理KV item,对KV item批处理写入PM,贴近PM硬件的访问粒度。


不同于SSDHDDPM的硬件粒度更小,而且顺序与随机写的性能接近,因此,对于大于256Bvalue,进行batch处理不会带来明显的性能提升。FlatStore采用了compact oplog的结构,对于小于256Bvaluelog entry中记录value数据。对于大于256Bvaluevalue不保存在log中,而是使用lazy-persist allocator管理,log entry中只记录指向value的指针。将多个log entry进行批处理,写入PMCompact oplog没有保存占用空间较大的value,减少了log的空间占用,也有助于减少log clean的代价。



使用batch可以贴近PM硬件粒度,但会增加响应延迟。在最初的版本使用Vertical Batch策略,每个核心只对自身处理的log entry进行batch,这样做无法在最短时间内收集到足够多的log entry,增大了延迟。采用Horizontal Batch策略,在一组核心中选择某一核心充当leaderleader负责收集其他核心处理的log entry进行批处理,其他核心等待leader完成。为了进一步利用多核性能,在Pipelined Horizontal Batch策略中,leader之外的核心可以在leader进行batch时继续处理请求。



为了发挥KV store的性能,FlatStore使用RDMA网络,利用RDMA one-side通信方式实现了RPC。实验表明在小粒度写密集负载下,FlatStore具有良好的性能。


  1. 自己的认识和体会

使用log structure技术可以最大限度利用PM硬件带宽,这种批处理,大块写入的思想多见于针对SSDHDD的系统,在PM上使用该技术需要注意硬件独特的性能。未来可以尝试将这种思想运用在混合内存系统中,或者用于改进PM上的索引结构。