【论文阅读】HiLSM:An LSM-Based Key-Value Store for Hybrid NVM-SSD Storage Systems

论文标题:HiLSM: An LSM-Based Key-Value Store for Hybrid NVM-SSD Storage Systems
论文作者:Wenjie Li, Dejun Jiang, Jin Xiong, Yungang Bao
单位:中国科学院计算机结构国家重点实验室;中国科学院大学;
出处:computing frontiers 2020


目录

    • introduction & background
        • 1.NVM
        • 2.KVS前人工作
        • 3.our work-HiLSM
    • motivation
    • design & implementation
        • 1.overview
        • 2. strategy 1Asynchronous update for index structures
        • 3.strategy 2Fine-grained data migration
        • 4.strategy 3Data filtering for obsolete data
        • 5.strategy 4Multi-threaded data migration
    • evaluation


本文聚焦了如何在NVM和SSD的混合存储情况下搭建KVS。注意这里的NVM不是泛指的概念,而是非易失性内存例如 PCM STT-MRAM 3D-Xpoint

introduction & background

1.NVM

读延时和DRAM相当,写延迟相较于SDD要低50-100x。但是相同的容量比SSD价格昂贵,因此目前还是无法完全替代SSD。而将NVM集成到SSD中就成为目前可行的一种结局方案。

  • low latency
  • high throughput
  • byte-addressability
  • high-density
2.KVS前人工作

前人在KVS领域特别是基于Hybrid NVM-SSD上的KVS工作仍然有些不足。

  • LevelDB 使用LSM-Tree充分发挥HDD顺序性能较好的特点。
  • RocksDBLevelDB的基础上,使用多线程compaction充分发挥了SSD高度并行地特点。
  • hybrid NVM-SSD storage systemsNoveLSM将持续化的memtable存储在NVM中来加速KVS的性能。但是没有解决NVM和SSD之间数据迁移的问题
  • hybrid NVM-SSD storage systemsSLM-DB在NVM中实现索引结构,在SSD中使用单级的LSM tree。虽然减少了写放大,但是导致了较高的空间放大(compaction无法及时清除过期数据)
3.our work-HiLSM

根据NVM和SSD自身的特点分别采用不同的数据组织方式。
在HiLSM中:

  • KVPs先写入NVM,必要时再写入SSD。
  • 所有的访问从NVM开始(在DRAM中保存一个hash table进行索引访问)。当miss的时候再往SSD中寻找。
  • 通过使用hash table访问NVM可以提供很低的延时。但是无法使用hash对KVPs进行排序从而无法支持range query。并且在以SSTs的形式写入SSD前也要先进行排序。为此,本文在DRAM中引入了red-black tree来对NVM中未排序的KVPs进行排序。并且使用后台线程来异步更新red-black tree,从而减少hash table和red-black tree带来的开销。
  • 我们知道对于NVM,时常需要数据迁移(到SSD)来释放空间。–fine-grained data migration strategy。同时由于NVM和SSD之间的带宽差异,将使用多线程进行迁移。
  • 为了减少写放大,本文中提出a data filter strategy,在NVM层面将废弃的数据滤除,从而不会迁移到SSD中造成更多的写放大。

motivation

总的来说,本文的重点在于如何使用NVM来加速SSD中的LSM-tree。主要有两种简单地思路。一是将WAL(Write ahead log)保存在NVM中,二是将persistent memtable保存在NVM中。

方法 主要内容 缺点
WAL in NVM 使用NVM存储WAL,确保数据持久和崩溃恢复的同时尽可能减少了WAL的同步开销 1.写入NVM的WAL之后仍然需要写入DRAM中的memtable,操作冗余。
2.无法减少读延时、写放大。
3.WAL属于文件系统。访问它如果需要DRAM和NVM之间的数据迁移并不划算。
memtable in NVM 直接将memtable存储在NVM中确保memtable数据持久与恢复(WAL的目的也在于此)。这样直接避免了WAL的开销。同时由于NVM大容量可以缓存更多的数据从而提高read hit ratio。同时DRAM和NVM中的memtable轮流flush到SSD中也减少了写停顿(write stall),从而提高了写性能。 以NoveLSM为例子
1.memtable主要使用skiplist。但是skiplist的性能随着工作负载增大而降低,并不适用于大容量的NVM。
2.使用multi-version schema来确保KVPs的准确性。导致了空间浪费以及写放大。
3.在NVM中使用single-memtable。无法为NVM及时腾出空间(coarse drained)。

注:写停顿主要来源于L0和L1之间大量数据compaction。

总而言之,上述的两种方法都很难将LSM-tree的性能充分发挥。因此提出了本文的工作–HiLSM

design & implementation

1.overview

【论文阅读】HiLSM:An LSM-Based Key-Value Store for Hybrid NVM-SSD Storage Systems_第1张图片

介质 方式 好处
NVM log-structured memory 帮助crash recovery 更好的空间利用率
SSD LSM-Tree 在读写性能之间更好平衡
  • 在NVM中,将NVM空间组织成一系列的segment。每个segment存储多个KVPs。通过head point和tail point进行管理。在head point和tail point之间的空间都已经被利用。
  • 使用两种索引结构在DRAM中进行索引;在NVM中对KVPs进行排序。

hash table is mainly used for low latency point query and red-black tree is mainly used for Scan operation and sstable serialization.

  • 当NVM空间使用达到一定程度就触发migration。将数据打包成SSTables,并flush入SSD中。之后就可以释放对应的segments和hash table中对应的索引项。

注意:释放index entry的时间十分重要。因为在释放期间,数据是无法进行访问的。从而影响read performance。

2. strategy 1Asynchronous update for index structures
  • 当一个KVP在NVM中被固化,就将对应的index entry插入到hash table中。使用一个后台专属线程频繁地检测Log-structured memory的最近更新,异步地更新red-black tree中的index entry。
  • 这样加速了put操作(因为将red-black tree使用额外线程异步更新)。
  • 同时加速了red-black tree的更新,从而使得数据迁移(NVM-SSD)不会被阻塞。
3.strategy 2Fine-grained data migration

【论文阅读】HiLSM:An LSM-Based Key-Value Store for Hybrid NVM-SSD Storage Systems_第2张图片

  • 分割成多个migration region(默认包含512个连续的segment)。每个region都有独占的red-black tree来排序索引KVPs。本文设定当NVM的利用率达到了migration region的大小,数据迁移就会触发。
  • 通过独占的线程选中最老的migration region打包成SSTables。
4.strategy 3Data filtering for obsolete data

通过两种方法在NVM中滤除过期的数据:with the migration;among different regions。因此filter分为了两个phase。

  • phase 1发生在red-black tree的更新,只有最近的更新会被保留在各自的red-black tree中。
  • phase 2发生在SSTables的序列化中。比较red-black tree中的index entry和hash table中的对应项,确保在不同migration regions的过期项被滤除。
5.strategy 4Multi-threaded data migration

使用多线程进行迁移主要是下面两点的权衡。

  • 一方面我们希望migration region够大,这样有机会滤除更多的过期数据。
  • 另一反面我们希望migration region小,这样可以缩小迁移时间。

多线程迁移就结合了这两个目的。


evaluation

  • For write operation, HiLSM provides more than 8.8x, 2.1x and 1.3x higher throughput than LevelDB, RocksDB and NoveLSM.
  • For read operations, HiLSM outperforms LevelDB, RocksDB and NoveLSM by 8.6x, 3.1x, and 10x respectively.
  • For write amplification (evaluated by a write-skewed workload倾向于写的负载). HiLSM reduces write amplification by 96%, 89% and 79% respectively compared to LevelDB, RocksDB and NoveLSM.

你可能感兴趣的:(论文阅读小笔记)