论文部分内容阅读
持久化键值存储系统广泛部署在数据中心为数据密集型应用提供服务,且应用对系统访问性能和存储容量的要求越来越高。新型非易失内存(NVM,Non-Volaitle Memory)具有可字节寻址、掉电数据不丢失、大容量、低功耗等特性,与DRAM构成的混合内存系统可支持大规模数据的快速访存和持久化。与DRAM相比,NVM具有较高的读写延迟和有限的写入寿命,现有工作通过构建混合索引支持高效的键值操作,然而对NVM上索引的读写暴露在键值操作的关键路径上,导致键值操作的延迟较高,并限制了对减少NVM写次数的优化,影响系统性能和寿命。针对以上问题,设计实现了基于DRAM-NVM内存的混合索引持久化键值存储系统DuetKV。基于NVM中键值操作的延迟分析,后台执行NVM中索引的读写,减少NVM读写延迟对键值操作性能的影响;基于负载中请求的时间局部性,设计命令缓存队列减少NVM中索引的请求处理次数。充分利用有限的低延迟DRAM资源,在DRAM中实现哈希表索引支持最优性能的点操作。构建后台持久化的B+Tree索引,在DRAM中创建内部节点和叶子缓存节点,加速键的对比并实现范围查询操作;在NVM中创建叶子节点,提供持久化保证。叶子节点内部键值对无序存放,由位图和原子写保证一致性;实现了根据持久化的叶子节点重新构建混合索引的方法,完成系统快速恢复;创建多棵B+Tree进一步减小后台索引操作的耗时。通过无锁命令队列保证哈希表和B+Tree索引的状态一致,此外,实现了两种命令缓存队列方案FIFO-Lock和WriteBatch,缓存合并对相同键的写请求以减少对NVM的写入次数。测试结果表明,键值操作的性能测试中,DuetKV比FPTree提高79%~5.6x;比HiKV写操作性能提高9.1%~46.8%,但范围查询性能下降5%~10%。使用YCSB测试负载的执行性能,DuetKV性能高于FPTree约65%~3.8x,比HiKV提高9.0%~14.6%;NVM读延迟测试中,DuetKV键值操作延迟比HiKV降低13.7%~36.1%。使用YCSB_A测试两种命令缓存队列对减少NVM写次数的效果和性能开销,在不同队列深度下,FIFO-Lock可以减少写次数13.6%到22%但性能下降12%,WriteBatch避免了性能损失同时减少11.4%到20%对NVM的写次数。