目录

  • introduction
    • 1.SMR drives
    • 2.HM-SMR(host-managed)
    • 3.在HM-SMR上搭建LSM-tree based KVS遇到的难点:
    • 4.our work
  • motivation&&background
    • 1. GC过程耗时很久
    • 2.空间利用率不好
    • 3. 空间利用率和性能的权衡
  • design-implementation
    • 1.overview
    • 2. a new on-disk data layout
    • 3.compaction window
    • 4.Gear compaction
  • evaluation
    • 1.load performance
    • 2.read performance
    • 3.zone space utilization
    • 4.用时构成与写放大

本文介绍了GearDB。SMR driver在顺序写/随机读领域有很大的应用优势。本文的目标在于消除基于SMR drive搭建的LSM-KVS垃圾回收所要的read-merge-write操作造成的开销较大以及造成的存储资源碎片化的问题。GearDB使用三种方式进行优化。下文进行分析。

introduction

1.SMR drives

叠瓦式硬盘:是垂直式硬盘(PMR)的一种延伸。

  • 因受物理极限的限制,磁道宽度(以及写入磁头的尺寸)只能缩小到一定的程度。不同于 PMR 不允许磁道相互重叠的做法,SMR HDD 采用的技术是让数据位循序写入,如其名称所示,磁道会如瓦片般堆叠在另一磁道的部分面积上,借此达到增加磁录密度的目的。同时读取的磁头大小也不相同,这样,读取磁头仍可从磁道上未被覆盖的部分来读取数据。
  • 一旦已写入的数据要编辑或覆盖时,写入磁头并不会直接在既有的磁道上进行磁录,以避免损坏相邻磁道。编辑后的数据会先在磁盘上的空白处写入,原先旧数据的磁道会暂时维持不动。等到 HDD 闲置时才会执行重组机制,将原先磁道上的旧数据位自动擦除,并重新成为可用空间以供新数据写入。
  • 例如在上图之中,zone1中write pointer指向了Sector C+1,当要更新Sector中的内容时候。系统会加载Sectors A,B,C到缓存中,然后更新Sector1的内容最终写回。这样的机制导致严重的写放大,也影响了硬盘本身的性能。
  • 只要将指针指向zone的第一个block就可以将不含有有效数据的zone重新用作empty zone。

2.HM-SMR(host-managed)

三种SMR类型有:drive-managed, hostmanaged, host-aware

优势在于:

  • 容量大
  • 可预知的性能
  • total cost of ownership(购买成本、操作成本、维护成本)

这样HM-SMR满足了数据中心应用环境下需要可预知性能以及顺序写,随机读应用的需求。

3.在HM-SMR上搭建LSM-tree based KVS遇到的难点:

  • HM-SMR以及KVS上垃圾回收(冗余的读写)会损害性能。同时也会影响硬盘的空间使用率。
  • 当前的垃圾回收基本采用的是(greedy garbage collection),即简单的read-merge-write。

4.our work

从上述的论述我们知道想要在HM-SMR上搭建高性能,高空间利用率的LSM-tree based KVS面临的问题,因此本文提出了GearDB:

  • 提出了新的on-disk data layout:一个zone中仅仅存储来自同一个level的SSTable。这样避免了传统layout中一个zone多个level SSTable的情况。由于同个level的SSTable进行compaction的频率是基本一致的,因而直接避免了反复冗余的读取。
  • 对于每一级的LSM-tree都设置了compaction window。包含了该级的1/k的zones。设置窗口将compaction和相应的碎片化限制在某个区域当中。
  • 提出了新的compaction逻辑-Gear compaction,通过直接清空compaction window的操作,使得SMR-zone无需GC就可重新使用。
  • 基于levelDB进行搭建,发现随机写性能相较提升1.71倍,有效空间利用率达到了89.9%

motivation&&background

1. GC过程耗时很久

由于一个zone中分布着multi-level,不论是Cost-benefit GC policy还是greedy GC policy都占据大部分时间。

2.空间利用率不好

这里表达的不好指的是85%区域的空间利用率在45%到80%之间。我们期待是是双峰分布。即希望zone不是满就是空。

3. 空间利用率和性能的权衡


design-implementation

1.overview

2. a new on-disk data layout

2.1 传统的layout之后的SMR如下图:

2.2 新的方式是将同一个level的SSTable放置于同一个zone中,如overview中所示

这里,同一个level的SSTable自然可以占据多个zone,但是仅仅只有一个zone可以接受数据(writing zone)。
这种策略使得一个zone中的SSTable有相同的compaction frequency!从而减少了存储空间的碎片化,同时方便了后续的策略。

3.compaction window

注意:Scsi是level(i)的compaction window大小;Lli是level(i)的大小上限。

  • compaction window的作用在于将compaction操作限制在某个window中。

  • 在CW中充满的是invalid SSTable的时候就可以像zone一样修改指针变为空(无需数据迁)

  • 每个层次中不同的zones将会轮流成为CW以确保所有的SST都能参与compaction

  • 下面是转化的逻辑:

1.A writing zone becomes a full zone once it is filled.
2/3. A writing zone or full zone can be added into a compaction window by rotation. 4.When all SSTables of a compaction window have been invalidated by gear compactions, the zones become empty
5.ready to serve write requests without incurring device-level garbage collection.

4.Gear compaction

4.1 Gear compaction algorithm
对于L(i)和L(i+1)之间的gear compaction,会将数据根据key range分为三个部分:

  • out of L(i+2)’s compaction window - written to L(i+1)
  • out of L(i+2)’s key range - dumped to L(i+2)

可以减少后续的WA(相对于写入L(i+1)之后在dump入L(i+2)中)

  • within L(i+2)’s compaction window - processed to passive compactions(比如和L(i+2)cw中的SSTable进行compaction)

注意为了避免数据被compaction到更高的层次。L(i+2)仅仅在Li+1达到该层大小限制并且and Li+2达到CW的大小限制。

下面将说明gear compaction流程。

1.L0和L1之间active compaction。将结果的数据分为三类。out of L2‘s’CW,in L2’s CW,out of L2’s keyrange
2.将第一类写入L1
3.将第三类dump进入L2
4.将第二类加入L2的CW进行后续compaction。
5.循环1-4步
注意:当写入L(i+2)的数据比一个SSTable来的小,就将这部分数据和写入L(i+1)的数据一同写入L(i+1)

4.2 sorted data devision
我们从上面的得知,需要比较key的范围将获得的数据分为三类。频繁的对比实际上加大了gear-compaction以及元数据管理的消耗,从而拖慢了性能。这里不论对于CW内或者外的SSTable,如果同一级中的SSTable key range gap 和其他的SSTables键值范围没有重复,就将这些key range合并成为一个大的连续范围。

例如 L(i+2)的CW中有两个SSTable,键的范围分别是a-b和c-d。这时候我们就去查看L(i+2)的其余SSTable。如果其余的SSTables没有键范围是和b-c重叠的。那么我们就可以将L(i+2)'s CW的键范围合并为a-d。这样就有效避免了过多的比较。

4.3 how compaction windows are reclaimed

  • 我们知道,对于充满invalid数据的CW,可以简单地通过修改指针的指向来重新声明为空。
  • 要想是的L(i+1)的CW中所有SSTable全部非法化就需要确保,L(i)中键和L(i+1)中重叠的的SSTables全部加入gear-compaction中。这样当所有的zones都轮流进入CW之后,我们得到L(i)中所有的SSTable。这种方式下,当k个L(i)中的CW被清除,就会有1个L(i+1)的CW被清除。
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200906144858554.png#pic_center =400xS)

evaluation

1.load performance

2.read performance

3.zone space utilization

4.用时构成与写放大



[1]本文可参考的基于SMR搭建的KVS:LUO, Q., AND ZHANG, L. Implement object storage with smr based key-value store. In Storage Developer Conference (2015).
[2] greedy strategy of GC-[32]

【论文阅读】GearDB: A GC-free Key-Value Store on HM-SMR Drives with Gear Compaction相关推荐

  1. Bigtable 论文阅读

    Bigtable: A Distributed Storage System for Structured Data论文阅读 谷歌在2003到2006年间发表了三篇论文 2003<The Goo ...

  2. [论文阅读] (06) 万字详解什么是生成对抗网络GAN?经典论文及案例普及

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  3. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](7)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](7) Into the Weeds Other types of grap ...

  4. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](5)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](5) Graph Neural Networks 图神经网络 Now th ...

  5. DCP(Deep Closest Point)论文阅读笔记以及详析

    DCP论文阅读笔记 前言 本文中图片仓库位于github,所以如果阅读的时候发现图片加载困难.建议挂个梯子. 作者博客:https://codefmeister.github.io/ 转载前请联系作者 ...

  6. 论文阅读丨神经清洁: 神经网络中的后门攻击识别与缓解

    摘要:本文将带你了解深度神经网络的后门知识,作者提出了一种可靠且可推广的DNN后门攻击检测和缓解系统,这是了解对抗样本和神经网络后门攻击的深度解读. 本文分享自华为云社区<[论文阅读] (02) ...

  7. [论文阅读] (13)英文论文模型设计(Model Design)如何撰写及精句摘抄——以入侵检测系统(IDS)为例

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  8. 深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》

    深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1< You Only Look Once: Unified, Real-Time Object Detection> Abstra ...

  9. 深度学习论文阅读目标检测篇(一):R-CNN《Rich feature hierarchies for accurate object detection and semantic...》

    深度学习论文阅读目标检测篇(一):R-CNN<Rich feature hierarchies for accurate object detection and semantic segmen ...

最新文章

  1. html5--5-15 绘制阴影
  2. C语言程序设计 搜集C/C++编译器
  3. matlab哈明窗带阻,数字信号处理实验1,2,3,4
  4. python hmac
  5. 【机器学习】opencv-数据预处理
  6. Ajax请求成功后页面跳转
  7. 修改 Chrome浏览器主页被劫持 chrome 主页被篡改成hao.qquu8.com的解决方案
  8. Elasticsearch 之索引创建原则
  9. 【车牌识别】基于matlab GUI模板匹配车牌识别(带面板)【含Matlab源码 1215期】
  10. LINUX第2天——基础操作
  11. 【税务基础知识】--很实用的常识
  12. SICP第一章:构造过程抽象(1.3)
  13. 蚂蚁金服凭啥估值超1500亿美元?一文看懂6大核心板块
  14. 基于matlab的Hough变换图像直线检测算法仿真
  15. 时间序列分析中的移动平均趋势剔除法
  16. 商品订购系统设计c语言有链表和指针,2014年计算机二级考试VF冲刺试卷及答案 2...
  17. 多元函数的极限,连续,偏导数,全微分之间的关系(学习笔记)
  18. openstack queens版本修改admin密码
  19. 什么东西比地球上的沙子还要多?
  20. win10电脑打不开我的电脑属性

热门文章

  1. STM32单片机入门学习笔记——定时器TIM第三部分
  2. 配置SharePoint门户网站的基本思路
  3. SQL Pass北京举办第四次线下活动,欢迎报名
  4. 百度Apollo(阿波罗)携手黑莓QNX,无人驾驶汽车迎来规则制定者?
  5. Java基础入门(持续更新)
  6. DDD(领域驱动设计)系列主题:失血模型,贫血模型,充血模型和胀血模型详细解读和代码案例说明!
  7. [Go] 解决 imported from implicitly required module
  8. 元月元日是哪一天_元日指的是哪一天?
  9. Linux下“~”和“/”
  10. 13.4 ThreadPoolExecutor和asyncio完成阻塞io请求