SSD

FastGC

Accelerate Garbage Collection via an Efficient Copyback-based Data Migration in SSDs

Posted by Yina Lv on 2019-04-01

引子

我们知道,在闪存设备中,由于数据的非就地更新特性,并采用重映射的page写机制,使得在GC操作时需要先以block为单位进行erase。然而GC耗时且被频繁触发。

在GC过程中,传统基于数据迁移的copyback操作如上述所示,由于ECC纠错机制存在于SSD 控制器中,每次执行copyback操作时,需要将数据从Source Page中读取出来放到cache Register然后一步步传至Data Buffer进行ECC,在ECC中判断如何迁移数据,若存在错误,则通过ECC更正数据并将更正后的数据一步步传回至Destination Page;若不存在错误,那么直接将数据从Cache Register传回至Destination Page。因此,copyback需要一定的时间开销

1.时间开销大

其中,执行一个page的copyback操作所需要的时间为

那么,数据传输时间占比为

其中,Npage代表一个block中的page数目,\mu代表当前block中的有效页数目

随着迁移页面的增加,数据传输延迟变得巨大,并极大地影响了GC性能。因此,这种传统的GC虽然确保了数据复制的可靠性,但是其copyback feasibility detection开销很大

2.传统的Copyback

3.copyback的出错率

这是有规则可寻的。

从上图可以看出,不同的P/E下,copyback数越多,出错率就越高,而且是在copyback数目达到一定值之后迅速上升。因此可以计算出这个threshold。如下图分布。

FastGC

经过上述的分析判断,可以知道,可以设定一个threshold。本文提出的方法是在每个block中纪录copy back的数目。

Copyback Feasibility Detector

根据copyback阈值及所有数据(在ssdcontroller内可知)copy back的次数来决定采用哪一种方式。
如果copyback执行的次数小于阈值,意味着还可以继续执行copyback,否则不然。

当GC操作被触发时,victim block中的所有数据的迁移方式都会由Copyback Feasibility Detector所决定。
少量有效页的迁移通过copyback操作实现,但是大量的copyback时候,一旦超过阈值,外部数据迁移操作将被执行。在执行多个copyback操作后,只需进行一次外部数据移动就可以减少累积的位错误,然后继续采用copyback来加速数据迁移

Example

�I want to say�

这篇文章是关于GC操作的,文章很简单,就是有点细节问题还需要自己研究一哈,GC操作的过程可以分为copyback和erase,本文针对的是GC过程时间开销大,那么主要原因就是在copy back(包括read、transport、program)过程中transport时间开销大。而且随着copyback数目的增加,达到一定值后,位出错率显著上升!因此,文章中新颖的idea就在于在SSD Controller中加入了Copyback Feasibility Detector以判别采用哪种方式。

emmmm,好久不写博文,今天看了这篇paper,赶紧更新!hhhh



支付宝打赏 微信打赏

good luck!