没有合适的资源?快使用搜索试试~ 我知道了~
ACM Transactions on Storage,Vol.号133、第二十二条。出版日期:2017年10月Tiny-Tail Flash:近乎完美地消除NAND SSD严世琴,李怀成,郝明哲,童浩,芝加哥大学SWAMINATHAN SUNDARARAMAN,并行机安德鲁·A.CHIEN和HARYADI S.芝加哥大学GUNAWI闪存已成为存储用户的主流目的地。然而,SSD并不总是提供用户期望的性能。闪存性能不稳定的核心罪魁祸首是众所周知的垃圾收集(GC)过程,由于SSD无法处理(阻止)传入的I/O,然后引发长尾等待时间问题。我们提出了一个解决这个问题的方法。闪存驱动器是一种“微尾”闪存驱动器(SSD),其通过使用四种新颖的策略(平面阻塞GC、旋转GC、GC容限读取和GC容限刷新)绕过GC阻塞的I/O来消除GC引起的尾部延迟。这四种策略利用了现代SSD内部技术的及时组合,例如强大的控制器,基于奇偶校验的冗余和电容器支持的RAM。我们的策略依赖于平面内回拷操作的使用。通过广泛的评估,我们表明,TT Fl A s H显着接近“无GC“的场景。在99和99.99个百分位数之间的空间中,Fl仅为1。0too2. 6×slow比无GC的情况下,而基础的方法遭受5-138 × GC诱导的CCS概念:·硬件→外部存储;·软件及其引擎环→文件系统管理;其他关键词和短语:基于闪存的SSDACM参考格式:严世琴,李怀成,郝明哲,童浩,Swaminathan Sundararaman,Andrew A.Chien和Haryadi S.古纳维2017年。Tiny-Tail Flash:近乎完美地消除NAND SSD中的垃圾收集尾部ACM Trans. Storage13,3,Article 22(October 2017),26 pages. https://doi.org/10.1145/31211331介绍闪存已成为存储用户的主流目的地。固态硬盘(SSD)消费市场继续以显著的速度增长[9],支持SSD的云虚拟机实例正在成为常态[8,14],闪存/SSD阵列是高端存储服务器的流行解决方案[24,31,49]。从用户然而,SSD并不总是提供用户期望的性能[16]。有人甚至建议本材料基于NSF支持的工作(授权编号:CCF-1336580、CNS-1350499、CNS-1526304、CNS-1405959和CNS-1563956)以及EMC、Google、Huawei、IBM和CERES研究中心的慷慨捐赠作者地址:S。Yan,H. Li,M.郝梦H.通,S。Sundararaman,A. A. Chien和H. S. Gunawi,1100 E. 58th Street,Chicago , IL60637; 电 子 邮 件 : {shiqin , huaicheng}@cs.uchicago.edu , hmz20000@uchicago.edu ,michaelht@cs.uchicago.edu,swaminathan. gmail.com,{achien,haryadi}@ cs.uchicago.edu.允许免费制作本作品的全部或部分的数字或硬拷贝,以供个人或课堂使用,前提是制作或分发副本的目的不是为了盈利或商业利益,并且副本的第一页上有本声明必须尊重作者以外的其他人拥有的本作品组件的版权。允许使用学分进行摘要以其他方式复制、重新发布、在服务器上发布或重新分发到列表中,需要事先获得特定许可和/或付费。从permissions@acm.org请求权限。© 2017 ACM 1553-3077/2017/10-ART22 $15.00https://doi.org/10.1145/312113322ACM Transactions on Storage,Vol.号133、第二十二条。出版日期:2017年10月二十二:2S. Yan等×闪存“可能无法拯救世界”(由于尾部延迟问题)[ 6 ]。 一些最近的工作剖析了为什么SSD很难满足服务水平协议(SLA)[40],并揭示了客户站点中700万小时SSD部署的高性能变化[31]。闪存性能不稳定的核心问题是众所周知且GC操作会导致长时间延迟,因为SSD无法服务(块)传入I/O。由于正在进行的GC,读取延迟差异可能会增加100 [6,25]。自2000年代中期以来,已经有大量的工作通过各种新技术减少GC操作的数量[30,39然而,我们在文献中几乎没有发现试图消除GC操作的阻塞性质并在长期运行中提供稳定和稳定的SSD性能的工作我们通过“tiny-tail”闪存驱动器(tt Fl a s h)解决了这个紧迫的问题 TTFI的目标是通过绕过GC阻断的I/O来消除GC诱导的尾部淋巴结转移。也就是说,在理想情况下,不应该有任何I/O会被GC操作阻塞,从而产生一个与“无GC”场景相似的闪存。关键的推动因素是SSD内部技术在许多方面发生了变化,我们利用这些变化来建立新的GC耐受方法。具体来说,我们利用三大SSD技术进步来构建TTFLA SH。首先,我们利用当今闪存控制器不断提高的功率和速度,这些闪存控制器支持更复杂的多线程、I/O并发、细粒度I/O管理)。第二,我们利用独立NAND冗余阵列(RAIN)。现代SSD的误码率已经增加到纠错码(ECC)不再被认为是足够的[36,41,51]。由于这种故障越来越多,现代商业SSD采用基于奇偶校验的冗余(RAIN)作为标准数据保护机制[7,13]。通过使用RAIN,我们可以通过奇偶校验重新生成来规避GC阻塞的读I/O。最后,现代SSD配备了一个由“超级电容器”[11,15]支持的大型RAM缓冲区(数百MB),我们利用它来屏蔽GC操作的写尾延迟。上述技术实践的及时结合使四个新战略成为可能,(a)平面阻断GC,其将GC阻断从粗粒度(con-granularity)转移到粗粒度(con-granularity)。控制器/通道)扩展到更细的粒度(平面级别),这取决于平面内回拷操作;(b)GC容忍读取,其利用基于RAIN奇偶校验的冗余来主动生成被正在进行的GC阻塞的读取I/O的内容;(c)旋转GC,其以旋转方式调度GC以在每个平面组中强制执行最多一个活动GC,因此可以保证SSD的一个约束是其对平面内回拷的依赖性,其中GC页面在平面内移动而没有数据流过SSD控制器,因此跳过对垃圾收集页面的ECC检查,这可能降低数据可靠性。在此不对这一影响的全部程度进行我们建议在后台执行ECC检查以克服此限制(第7节)。我们首先在SSDSim [33]中实现了TTFI,以在设备级模拟准确的延迟分析接下来,为了运行真正的文件系统和应用程序,我们还将ttFl移植到基于VSSIM的更新的基于QEMU/KVM的平台[57]。通过全面的评估(第6.1节),我们表明ttFI成功地消除了大量I/O的GC阻塞,将GC阻塞的I/O从2-7%(基本情况)结果,TTFlA sH显著地减少了尾部疲劳。具体地说,在第99次和第99.99次迭代之间,与完美的无GC场景相比,基本方法遭受以下问题:5.6至138.2× GC诱导的减速。另一方面,TTFlA sHTiny-Tail Flash:近乎完美的垃圾消除二十二:3ACM Transactions on Storage,Vol.号133、第二十二条。出版日期:2017年10月××× ×××图1.一、GC诱导的尾流。这些数字在第2节中解释。无GC情况,其证实了TTFI几乎完全消除了GC阻塞和所产生的“微小”延迟尾部。我们还表明,ttFlA sH比减少GC影响的最先进方法(如抢先GC)更稳定[10,44](第6.2节)。具体地,TTFI持续地提供稳定的延迟,而抢占式GC在密集的I/O下表现出延迟尖峰此外,我们对比了GC影响消除与减少的根本区别(第6.3节,第8节)。总之,通过以独特的方式利用现代SSD内部技术,我们已经成功地构建了新颖的功能,为GC诱导的尾部松弛的关键问题提供了强大的解决方案在下面的章节中,我们将介绍扩展的动机(第2节)、SSD入门(第3节)、tT FlA sH设计(第4节)、实现(第5节)、评估(第6节)和限制(第7节)、相关工作(第7节)、结论(第9节)和证明草图(附录)。2扩展动机:GC诱导的尾潜伏期我们提出了两个实验,显示GC的级联影响,激励我们的工作。每个expercent运行在2014年底的128 GB三星SM 951上,它可以维持70“K W PS”(70 K的4KB随机w rites/s)。在图1(a)中,我们运行了一个前台线程,该线程在三个实验中同时执行16KB的随机读取,后台线程以1、2.5和5KWPS(远低于最大70KWPS)注入4KB的随机写入噪声。我们测量Li,即每个16KB前台读取的延迟。图1(a)绘制了Li的CDF,清楚地示出了更频繁的GC(来自更密集的随机写入)阻塞传入的读取并创建更长的尾延迟。 为了证明尾部是由GC引起的,而不是延迟,我们进行了相同的实验,但现在使用随机读取噪声(1,2.5和5KRPS)。读取噪声结果绘制为标记为“读取噪声”的三条重叠细线如图所示,对于5 KWPS噪声,读取操作变为分别在第90、95和99个字节处比无GC场景慢15、19和96。在图1(b)中,我们保留了5 KWPS噪声,现在改变了前台随机读取的I/O大小(在五个实验中为8、16、32、64和128 KB)。通常,一个较大的读取应该只消耗2个更长的延迟。然而,该图显示GC在较大的读段中诱导更多的尾轻链。例如,在第85百分位,64KB读取比32KB读取慢4。问题的核心是:如果一个大的读操作中的一个页面被GC阻塞,那么整个读操作就无法完成;随着读操作大小的增加,其中一个页面被GC阻塞的概率也会增加。二十二:4S. Yan等ACM Transactions on Storage,Vol.号133、第二十二条。出版日期:2017年10月×××图二、 SSD内部。该数字在第3节中解释。表1. SSD参数。尺寸潜伏期SSD容量256GB页面读取40μ s通道数8(闪存寄存器)平面数量/通道8页面写入800μ s平面尺寸4GB(寄存器到闪存)平面数/芯片**1页面数据传输100μ s块数/平面4096(via渠道)#Pages/block页面大小2564KB块擦除2ms本文使用上述参数。** 每个芯片一个平面是为了演示和说明的延迟时间基于平均值;实际延迟时间可能因读取重试、不同电压等而有所不同闪存读取和写入必须使用平面寄存器。正如我们稍后解释的那样(第3节,第4.1节)。当与相同但具有5-KRPS噪声(标记为“ReadNoise”的五条铰链射线线)的实验相比时,该图案更明显。为了更公平的实验,因为闪存读取延迟通常比写入延迟快20,我们还运行了强度更高20的读取噪声和另一个读取噪声大小更大结果是相似的。3SSD底漆:GC阻塞在介绍FlAS之前,我们首先需要描述SSD内部对于理解GC阻塞的基本要求。本节从物理硬件的角度描述GC如何操作SSD 布局:图2显示 了基本的 SSD内部 布局。数 据和命 令传输通 过并行 通道(C1..CN)。一个通道连接多个闪存平面;一到四个平面可以封装为单个芯片(虚线框)。平面包含闪存页块。在每个平面中,都有一个4KB寄存器;所有闪存读取/写入都必须通过平面寄存器进行传输。控制器连接到用于多种目的的电容器支持的RAM(例如,写入缓冲)。为了清楚起见,我们使用表1中所示的具体参数值。GC操作(四个主要步骤):当使用页面计数增加到某个阈值以上时(例如,70%),垃圾收集进程(GC)将启动。一个可能的GC操作从旧块中读取有效页,将它们写入同一平面内的空闲块,并擦除旧块。图2显示了GC-ing平面中的两个copyback(两个有效页被复制到一个空闲块)。最重要的是,每个平面都支持4KB寄存器,页面回拷发生在GC平面内,而不使用通道[12,19]。Tiny-Tail Flash:近乎完美的垃圾消除二十二:5ACM Transactions on Storage,Vol.号133、第二十二条。出版日期:2017年10月图3.第三章。 不同水平的GC阻断。 带粗体边缘的着色I/O亮平面中的I/O可供使用,而暗平面中的非着色I/O将被阻止。(a)在阻塞器阻塞(第3节)中,GC阻塞控制器/整个SSD。(b)在通道阻断(第3节)中,GC阻断连接到GC平面的通道(c)在平面阻断中(第4.1节),GC仅阻断GC-ing平面。然后,控制器对每个页面回拷执行以下四个步骤的for循环:(1) 通过通道(仅0.2μ s)向GC-ing平面发送闪存到寄存器读取命令(2) 等待直到平面执行1页读取命令(40μ s,不使用通道),(3) 发送寄存器到闪存写命令,以及(4)等待直到平面执行1页写命令(800μ s,不使用通道)。重复步骤(1)-(4),直到复制完所有有效页,然后擦除旧块。这里的关键点是回拷操作(步骤(2)和(4);大约840μ s)是在GC平面内内部完成的,而不会穿过通道。GC阻塞:当某些资源(例如,控制器、通道、平面)由GC活动使用,这将延迟后续请求,类似于行首阻塞。使用分块设计是因为它们简单且便宜(门数少)。但由于GC潜伏期-切片较长,阻塞设计可产生显著的尾部松弛。实现GC的一种简单方法是使用阻塞控制器。也就是说,即使只有一个平面执行GC,控制器也忙于与GC平面通信,无法为指定给任何其他平面的未完成I/O提供服务。我们称之为阻塞垃圾收集,如图3(a)所示这里,单个GC(条纹平面)阻塞控制器,因此所有通道和平面都被阻塞(粗线和暗平面)。无法处理所有未完成的I/O(由无阴影的I/O表示)。OpenSSD [4]、VSSIM [57]和诸如eMMC设备之类的低成本系统采用这种实现。另一种方法是支持多线程/多CPU的通道共享。这里,当线程/CPU与GC-ing平面通信(在for循环中)并阻塞平面图3中的粗线),其他线程/CPU可以为指定给其他通道的其他I/O提供服务(阴影I/O和亮平面中的粗边I/O我们将其称为通道阻塞GC(即,GC阻塞GC平面的通道SSDSim [33]和disksim+SSD [19]采用了这种实现。商品SSD没有布局规范,但从我们的实验(第2节)中,我们怀疑存在某种形式的通道阻塞(至少在客户端SSD中)图1还隐式地显示了阻塞的I/O是如何产生级联延迟的。想象“未完成的I/O”表示满的设备队列(例如,通常为32个I/O)。发生这种情况时,主机操作系统无法提交更多的I/O;因此,用户I/O在操作系统队列中被阻塞。我们在评估中显示了这种影响。4TTFLASH设计我们现在介绍的设计TTFlA sH,一个新的SSD架构,实现保证性能接近无GC的情况。我们能够通过以下四个关键策略消除所有级别的GC阻塞二十二:6S. Yan等ACM Transactions on Storage,Vol.号133、第二十二条。出版日期:2017年10月××××(1) 设计非阻塞控制器和通道协议,将任何资源阻塞仅推到受影响的平面。我们称这种细粒度架构为平面阻塞GC(第4.1节)。(2) 利用基于RAIN的冗余(第4.2节),并将其与GC信息相结合,以在平面级别主动重新生成被GC阻止的读取,我们称之为GC容错读取(第4.3节)。(3) 以轮换的方式调度GC,以在每个平面组中强制执行最多一个GC,这样,没有一个广告将比一个GC更多;一个parity只能“cut”一个tail。我们将此旋转GC命名为(第4.4节)。(4) 使用电容支持的写缓冲区来实现快速持久的写操作完成,允许以后以GC容限方式将写操作驱逐到闪存页面我们将其命名为GC耐受冲洗(第4.5节)。4.1平面阻断GC(PB)控制器和通道阻塞GC由于其硬件实现的简单性而经常被采用;GC本质上是copyback命令的for循环然而,这种简单性导致了严重的尾翼松弛,因为独立飞机不必要地被阻塞。对于大型I/O来说,队列阻塞并不比队列阻塞GC更好;由于每个大型I/O通常跨多个通道进行条带化,因此一个GC繁忙的通道仍然会阻塞整个I/O,从而抵消了SSD并行性的好处此外,随着SSD容量的增加,在同一通道中将有更多的平面被阻塞更糟糕的是,GC周期可能会很长。一个复制回64个有效页面(25%有效)的GC将导致54ms(64 840μ s)的阻塞通道,这可能会导致数百个其他I/O无法服务。一个原本只需要不到100μ s的未完成读操作现在被延迟了几个数量级[6,25]。为了减少这种不必要的阻塞,我们引入了平面阻塞GC,如图3(c)所示。在这里,GC阻塞的唯一未完成的I/O是对应于GC处理平面(标签)的I/O。到非GC平面的所有I/O(非标签)是可服务的,包括GC-ing平面的同一通道中的标签顺便说一下,平面阻塞GC可以互换地定义为芯片阻塞GC;在本文中,为了简单起见,我们使用1个平面/芯片。为了实现这个概念,控制器必须执行细粒度的I/O管理。为了说明,让我们考虑GC的四个步骤(S e3)。在图1中,在计数器CPU/th读取器发送闪存到寄存器读/写命令(步骤1和3)之后,它将不会空闲等待(分别为40μ s和800μ s),直到下一个步骤可执行。(Note在通常的实现中,由于简单的for循环和需要访问信道以检查平面的回拷状态,控制器是空闲的)对于平面阻塞GC,在步骤1和3(发送读/写命令)之后,控制器创建一个未来事件来标记完成时间。控制器可以可靠地预测平面内读/写命令将完成多长时间(例如,平均分别为40和800μs)。总而言之,在平面阻塞GC的情况下,TTFI与平面内回拷和其他未完成I/O的通道使用如图3(c)所示,在平面内回拷(条带化/GC化平面)的持续时间内,控制器可以继续向相应通道中的其他非GC化平面提供I/O(▲I/O)。平面阻塞GC可能会释放数百个以前被阻塞的I/O。然而,还有一个未解决的GC阻塞问题和一个新的分支。未解决的GC阻塞问题是,GC处理平面的I/O(图3(c)中的标签)仍然被阻塞,直到GC完成;换句话说,只有平面阻塞,我们不能完全消除GC阻塞。平面阻塞的新衍生物是潜在的延长的GC操作;当GC操作平面准备好接受另一个命令时(步骤2和4结束),由于重叠,控制器/通道可能仍然处于服务其他I/O例如,控制器无法启动GC写入(步骤3)Tiny-Tail Flash:近乎完美的垃圾消除二十二:7ACM Transactions on Storage,Vol.号133、第二十二条。出版日期:2017年10月−−见图4。TTFl A sh Architecture. 图中显示了我们的RAIN布局(第4.2节)、GC容限读取(第4.3节)、旋转GC(第4.4节)和GC容限flush(第4.5节)。为了简化说明,我们使用四个通道s(C0−C3)。 在相同垂直位置的平面形成平面组(G0、G1等)。RAIN条带基于N-1个LPN和奇偶校验页(例如,012P012)。GC读取完成(步骤1)后40μ s,同样,下一次GC读取(步骤1)不能在上一次GC写入后800μ s如果GC被延长,那么到GC-ing平面的I/O将被阻塞更长时间。幸运的是,上述两个问题可以通过RAIN和GC容限读取来掩盖4.2雨为了防止GC平面的I/O阻塞,我们利用RAIN,这是最近流行的数据完整性标准[7,13]。RAIN在SSD内部引入了奇偶校验页面的概念。就像基于磁盘的RAID的发展一样,许多RAIN布局已经引入[36,41,45,46],但它们主要关注数据保护,写入优化和磨损均衡。相比之下,我们设计了一个RAIN布局,也针对尾部公差。本节简要介绍了我们的基本RAIN布局,足以理解它如何实现GC容限读取(第4.3节);我们更高级的布局将在后面与损耗均衡问题一起讨论(第7节)。图4显示了我们的RAIN布局。为了简化说明,我们使用4个通道(C0C3),并且RAIN条纹宽度与通道计数(N=4)匹配。每个通道中相同位置处的平面形成平面组(例如,G1)。页面条带基于逻辑页面编号(LPN)。对于每个条带(N1个连续的LPN),我们分配奇偶校验页。例如,对于LPN 0-2,我们分配奇偶校验页P012。关于闪存转换层(FTL)设计(LPN到PPN映射),有两个选项:动态或静态。动态映射(其中一个LPN可以映射到任何PPN)通常用于加快写入速度(灵活的目标)。然而,在现代SSD中,写延迟问题被电容支持的RAM吸收(第4.5节);因此,写分布在多个通道上。第二,当各个页面独立时,动态映射工作得很好;然而,RAIN页面是依赖于条带的。使用动态映射,条带中的页面可以放置在一个通道之后,这将未充分利用通道并行性。另一个设计决策是选择页级或块级映射.我们简单地选择页面级方法,因为块级已知会遭受高写入放大。鉴于上述原因,我们创建了一个页面级混合静态-动态映射。静态分配策略如下:(a)将LPN静态地映射到平面(例如,LPN 0到平面G0C0二十二:8S. Yan等ACM Transactions on Storage,Vol.号133、第二十二条。出版日期:2017年10月−−≤−−–×−在图4中),(b)N1个连续的LPN和它们的奇偶校验形成一个条带(例如,012P012),以及(c)将条带页映射到一个平面组内的跨通道的平面(例如,012P012 inG0)。稍后,我们将展示所有这些对于支持GC容错读取(第4.3节)和旋转GC(第4.4节)至关重要在动态分配策略方面,在每个平面或芯片内,LPN可以动态映射到任何PPN(数十万个选择)。对同一LPN的覆盖将被重定向到同一平面中的空闲页面(例如,对LPN 0的重写可以指向G0C0平面内的任何PPN)。为了防止奇偶通道瓶颈(类似于RAID-4奇偶磁盘瓶颈),我们采用了稍微定制布局的首先,我们将通道集视为RAID-5组。例如,在图4中,P012和P345在不同的通道中,以对角线方式布置其次,由于SSD平面形成具有磨损问题的二维布局(GiCj)(与磁盘的“平坦”LPN不同),因此我们需要确保热奇偶校验页均匀分布。为了解决这个问题,可以采用动态迁移这样的解决方案,我们将在后面讨论(第7节)。4.3GC容差读取(GTR)借助RAIN,我们可以轻松支持GC容限读取(GTR)。对于全条带读取(使用N1个通道),GTR很简单:如果由于正在进行的GC而无法获取页面,则通过从另一个平面读取奇偶校验来快速重新生成页面。在图4中,给定对LPN 0-2的全条带读取因此,完整条带读取不受正在进行的GC的影响。由此产生的延迟比等待GC完成快一个数量级;奇偶校验计算开销对于N8而言小于3μs,额外的奇偶校验读取至少需要40+ 100μ s(读取+传输延迟;表1),并且不会引入太多争用。对于部分条带读取(R页,其中RB(40+ 100)μ s时执行额外读取,其中B是NR个额外读取中的繁忙通道数(对于非繁忙通道,额外读取是空闲的)。根据我们的经验,这个策略有效且公平地削减了GC尾部开销,而不会引入严重的争用。相反,总是执行额外读取的“贪婪”方法会导致高通道争用。稍后,在6.7节中,我们将比较我们的成本计算与贪婪方法的性能。我们还想指出,我们简单的成本计算是有效的,剪尾巴。我们的简单成本计算的未来扩展可以进一步研究我们强调,与tail-tolerant推测性执行不同,tail-tolerant推测性执行通常被定义为实际上可能不需要的优化任务,GC-tolerant读取是肯定的,而不是推测性的;控制器确切地知道GC何时何地发生以及它将完成多长时间。GTR是有效的,但有一个局限性:当一个平面组中的多个平面同时执行GC时,它不起作用,我们使用旋转GC来解决这个问题4.4旋转GC(RGC)由于RAIN在所有平面上均匀分布I/O,因此多个平面可以达到GC阈值,从而同时执行GC例如,在图4中,如果LPN 0和1(G0C0和G0C1)的平面都执行GC,则读取LPN 0-2将被延迟。 核心问题是一个奇偶平面只能“切割”一个尾部。双奇偶校验RAIN不被使用是由于更大的超光速。Tiny-Tail Flash:近乎完美的垃圾消除二十二:9ACM Transactions on Storage,Vol.号133、第二十二条。出版日期:2017年10月≤–−为了防止这种情况,我们开发了旋转GC(RGC),它强制每个平面组中最多有一个平面可以一次执行GC。仍然允许不同平面组中的并发GC如图4所示,每个Gi中有一个)。请注意,旋转GC取决于我们的RAIN布局,该布局确保每个条带都静态映射到一个平面组。我们现在强调我们最重要的信息:如果旋转GC始终保持正确,则GC阻塞的I/O将为零。这里的问题是,我们的旋转方法可以延迟一个平面在此期间,如果所有空闲页都用完,则平面组中的多个GC必须并发执行。这可能取决于N和写入强度的组合而发生。稍后,在第6.6节和附录A中,我们提供了一个证明草图,表明在实际的写密集型场景下,使用条带宽度N采用大的条纹宽度(例如,N=32)是可能的,但可能违反旋转GC,这意味着GC尾延迟不能一直被消除因此,在多通道(例如,32)现代SSD,我们可以保持N=8或16(例如,在同一垂直位置内的平面上创建四个8平面或两个16平面组增加N是不利的,不仅因为旋转GC违规,而且由于可靠性降低和GTR为小读取生成的额外I/O(第4.3节)。在我们的评估中,我们使用N=8,考虑到1/8奇偶校验开销是100%。4.5GC耐受冲洗(GTF)到目前为止,我们只处理读尾。写入更复杂(例如,由于写入随机性、读取和修改奇偶校验更新以及对耐久性的需要)。为了处理写入复杂性,我们利用了闪存行业大量使用电容支持RAM作为持久写入缓冲区(或简称“cap-back e d RAM”)的事实[ 15 ]。为了防止数据丢失,RAM大小根据电源故障后的电容器放电时间进行调整;大小可以从几十到几百MB不等,后面是“超级电容器”[ 11 ]。我们采用了可回溯的RAM来“持久地”快速地吸收所有写入。当缓冲区占用率超过80%时,将运行后台刷新以驱逐某些页面。当缓冲器满时(例如,由于密集的大写入),将运行前台刷新,这将阻止传入的写入,直到释放一些空间。这里要解决的挑战是,当被逐出的页面必须被发送到GC-ing平面时,前台刷新可能引起写尾。为了解决这个问题,我们引入了GC容忍刷新(GTF),它确保页面回收不受GC阻塞的影响,这在旋转GC中是可能的。例如,在图4中,可以将属于3J、4J和P3J4J5J的页面从RAM驱逐到闪存,而将页面5J驱逐延迟,直到目的地平面完成GC。通过旋转GC,GTF可以在每个条带的每N个因此,页面所需的最小RAM空间尚未被冲的小。附录A表明现代SSD RAM大小足以支持GTF。对于部分条带写入,我们执行通常的RAID读-修改-写驱逐,但仍然不会被GC阻止让我们想象一下图4中更新页面7J和8J的最坏情况。新的奇偶校验应该是P67J8J,这需要先读第6页.尽管页面6是不可到达的,但是可以通过读取旧页面P678、7和8来重新生成它,在这之后可以驱逐页面7J、8J和P67J8J我们注意到,由于我们优先考虑驱逐全条带,因此很少发生如此昂贵的奇偶校验更新脏页面首先到非GC化平面,然后全条带页面到大多数非GC化平面。接下来,我们将部分条带化的脏页驱逐到非GCing平面,最后使用GTF将部分条带化的页驱逐到大部分非GCing平面与专注于减少写入放大的其他驱逐算法[39]相比,我们的方法增加了GC尾部容差。二十二:S. Yan等ACM Transactions on Storage,Vol.号133、第二十二条。出版日期:2017年10月····5执行本节描述了我们的TTFlA sH实现,可在我们的网站上找到[1]。我们下面报告的代码行数(cloc)是使用cloc工具获得的,不包括空白ttFlash-Sim(SSDSim):为了便于在设备级别进行准确的延迟分析,我们首先在SSDSim [33]中实现了ttFI,SSDSim是最近流行的模拟器,其准确性已在真实硬件平台上得到验证。与2008年的disksim+SSD相比,它是一个更新的模拟器(2011年发布)[19]。我们使用SSDSim是因为它的简洁设计。我们通过向SSDSim添加2482位来实现所有的tT FlA sH功能这涉及到对vanilla版本(6844位)的重大修改(+36%)我们修改的细分如下:平面阻塞(523行),RAIN(582行),旋转GC(254行),GC容限读取(493行)和写入(630行)。ttFlash-Emu(“VSSIM++”):为了运行Linux内核和文件系统基准测试,我们还将ttFla s h移植到VSSIM,这是一个基于QEMU/KVM的平台,“促进了SSD固件算法的实现”[ 57 ]。VSSIM在RAM磁盘上模拟NAND闪存不幸的是,VSSIM此外,由于VSSIM是单线程设计,因此它基本上模仿了阻塞内存的SSD(GC下的1KIOPS这些限制促使我们做出重大改变。首先,我们迁移了VSSIM的单线程 逻辑转换为QEMUAIO模块内的多线程设计,这使我们能够实现通道阻塞。其次,我们将此新设计迁移到最近的QEMU版本(v2.6),并将其连接到PCIe/NVMe接口。我们的修改,我们称之为“VSSIM++”,可以支持50K IOPS。最后,我们将TTFLAsH的功能移植到VSSIM++中,简称ttFlash-Emu,总共869个其他尝试#1(OpenSSD):我们尝试在真实硬件平台上实现t T Fl A s h(2011Jasmine和2015 Cosmos OpenSSD板[4])。经过几个月的尝试,我们遇到了OpenSSDAPI和编程模型的许多限制OpenSSD在单个CPU上的单线程实现中表现出它的GC操作被设计为前台for循环;因此,当GC发生时,不能处理其他传入的IO(不管 GC没有使用所有通道或平面)。开发人员不能为后台GC操作创建多个线程,通道队列也不会通过OpenSSD编程API公开所有这些都使得飞机封锁成为不可能。此外,不存在用于从SSD的DRAM到主机的DRAM的数据传输的可访问命令;仅闪存到主机读取命令可用。 这可以防止我们将奇偶校验重新生成的后期数据(最初存储在SSD的DRAM中)传输到主机的DRAM。最后,无法访问挂钟时间,这限制了我们预测GC剩余时间的能力。我们回顾了一些使用OpenSSD的文章,发现它们主要修改了FTL [34,47,53]缓冲逻辑[35]和接口[37,50],这些都可以在OpenSSD编程模型的优雅简单性中实现(这是其主要目标)。我们想重申,这些不是硬件限制,而是OpenSSD编程模型(这是其主要目标)的优雅简单性的后果虽然我们在OpenSSD上实现tT FlA sH的努力没有取得丰硕的成果,但我们与硬件架构师的对话表明,T TFlA sH可以在真正的固件上实现(例如,在基于FPGA的平台上进行大约1年的开发和测试项目其他尝试#2(LightNVM QEMU):最后,我们还研究了LightNVM(开放通道SSD)QEMU测试平台[17]。LightNVM [22]是一个管理OpenChannel SSD的内核框架( 它 将 单个 闪 存 通 道 暴露 给 主 机 , 类 似于 软 件 定 义 的闪 存 [49] ) 。 目 前,OpenChannel SSD和LightNVM的QEMU测试平台都不如果没有这样的支持,并且由于GC是由Tiny-Tail Flash:近乎完美的垃圾消除二十二:ACM Transactions on Storage,Vol.号133、第二十二条。出版日期:2017年10月···×××主机操作系统,GC页面必须在设备和主机之间来回交叉。这就造成了沉重的背景-vs.-GC和用户I/O之间的前台I/O传输争用例如,当GC发生时,用户我们将此集成留到支持intra-SSD copy-page命令后的将来工作中6评价我们现在提出的广泛评估表明,ttFlA sH显著消除了GC阻塞(第6.1节),提供了比最先进的抢先GC(第6.2节)和其他GC优化技术(第6.3节)更稳定的延迟,并且不会显著增加编程和擦除周期(P/E周期)超过RAIN开销(第6.4节)。工作负载:我们评估了两种实现:ttFlash-Sim(在SSDSim上)和ttFlash-Emu(在VSSIM++上),如第5节所述。对于ttFlash-Sim评估,我们使用了来自MicrosoftWindows服务器的六个真实块级跟踪,如图5的图标题所示。他们的详细特征公开报道[3,38]。默认情况下,对于每个跟踪,我们选择最繁忙的时间(6分钟TPCC跟踪除外)。对于ttFlash-Emu评估,我们使用具有如图8的x轴中列出的六个个性的filebench [2]。硬件参数:对于ttFlash-Sim,我们使用表1中提供的相同256 GB参数值,64 MB上限支持RAM和典型设备队列大小32。ttFlash-Emu使用相同的参数,但其SSD容量仅为48GB(受机器DRAM的限制)。我们使用了一台配备2.4GHz八核英特尔至强处理器E5-2630-v3和64 GB DRAM的机器。模拟和仿真SSD驱动器使用相同的工作负载进行预热。6.1 主要结果微小尾部延迟:图5显示了在ttFlash-Sim上运行的六个跟踪驱动实验中读取延迟的CDF。请注意,我们只显示了读延迟;写延迟是快速和稳定的,因为所有的写都被cap-backed RAM吸收了(第4.5节)。 如图5所示,基本应用程序路径(“Bas e“=具有通道阻塞和最佳FTL [ 33 ]且不具有RAIN的故障SSDSim)表现出长尾延迟。相比之下,当我们在另一个的顶部上一次一个地添加每个TTFI的H特征时:+PB(平面阻断GC)、+GTR(GC耐受读取)和RGC(旋转GC),观察到显著的改进。当添加所有特性(RGC+GTR+PB)时,微小的尾部延迟接近无GC场景的尾部延迟,我们稍后会解释图6绘制了相同实验的平均乳酸。该图突出显示,尽管在第90百分位数处,“基地”和“基地”的寿命相似(图5),但“基地”的长尾寿命严重影响其平均寿命。与Base相比,FlAsH的平均速度ttF冲击与 NOGC:为了表征ttFlAs H的尾流的益处,我们将ttFl a s h与一个精确的“无GC”场景(“NoGC“= ttFl a s h没有GC且有RAIN)进行比较。在NoGC中,这是一个在没有任何GC工作(具有高GC阈值)的情况下运行的表2显示了在各种高温度下从NoGC到ttFl如图所示,TTFl显著减少GC阻塞。具体而言,在第99- 99.9百分位数处,FLA的下降仅为1.00至1.02。在第99.99百分位数时,TT_F_A的下降幅度仅为2.6 相比之下,Base在第99- 99.99个字节之间有5.6在平均延迟方面,图6示出了在有或没有GC的情况下,TTFI的性能GC阻塞的I/O:为了显示SSD内部在我们的加速背后发生了什么,我们计算了GC阻塞的读I/O的百分比(“%GC阻塞的I/O”),如图7所示。二十二:S. Yan等ACM Transactions on Storage,Vol.号133、第二十二条。出版日期:2017年10月图五、 尾乳。 这些图示出了当我们将每个ttFI添加到以下策略时不同工作负载中的读取延迟(x=0 - 80ms)的CDF:+PB(平面阻塞GC)、+GTR(GC容限读取)和+RGC(旋转GC)。y轴显示第95 - 100次扫描。同样重要的是,我们强调GC阻塞的I/O会填满设备队列,从而产生阻止新主机I/O进入设备的延迟,我们将其计为“%GC阻塞的I/O”。因此,图中的每个条
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功