0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于内部区域压实(IZC)的垃圾回收

SSDFans 来源:SSDFans 2023-06-30 10:28 次阅读

​ ​

​01 背景

​目前基于闪存的固态硬盘保持着几十年前的块层接口,这在容量超额配置、页面映射表的DRAM、垃圾回收开销以及试图减轻垃圾回收的主机软件复杂性等方面带来了巨大的代价。块层接口向其上层展现出来的是一个一维的LBA数组,每个LBA都可以被读写,其最初的引用是为了隐藏存储介质的不同。然而随着存储介质的迭代,为flash based存储设备维护块层接口语义代价越来越大,如flash based SSDs中FTL的运转需要大量DRAM,GC需要OP空间,并且设备请求命令延迟被GC干扰后有抖动。NVMe区域命名空间(ZNS)的设定为SSD提供了一种全新的接口模式,ZNS作为一种新的存储接口正在出现,逻辑地址空间被划分为固定大小的区域,每个区域必须按顺序写入,以便于闪存访问。

​02 问题

​1.ZNS的IO栈

一般来说,新的存储接口需要修改软件栈。对于ZNS,需要修改两个主要的IO栈组件,文件系统和IO调度器。首先,原地更新的文件系统,如EXT4,必须被附加记录的文件系统所取代,如日志结构文件系统(LFS),以消除随机更新。因为LFS的一个区段是通过追加记录按顺序写入的,每个区段可以被映射到一个或多个区域。其次,IO调度器必须保证一个区的写请求的有序交付。例如,可以为每个区使用一个无序的队列,调度器只需要确定不同区之间的服务顺序。ZNS的顺序写要求使得ZNS只能适用于特定需求的应用访问。

2.增加主机开销

在LFS的append logging方案下,脏段的过时块必须通过段压缩(也称为段清理或垃圾收集)来回收,它将段中的所有有效数据转移到其他段,使段变得干净。压实会调用大量的复制操作,特别是当文件系统的利用率很高时。必须进行主机端GC,以换取使用无GC的ZNS SSD,尽管可以避免log-on-log下的重复GC。主机端GC的开销比设备端GC的开销要高,因为主机级块复制需要处理IO请求,主机到设备的数据传输,以及读取数据的页面分配。此外,段压缩需要修改文件系统元数据以反映数据的重新定位。此外,段压缩的数据复制操作是批量进行的,因此,许多待写请求的平均等待时间是相当长的。根据F2FS--广泛使用的日志结构文件系统之一的实验,当文件系统利用率为90%时,分段压缩的性能损失约为20%。因此,可以说目前的ZNS只关注SSD方面的好处,而没有考虑到主机的复杂性增加。为了简化SSD的设计,所有复杂的东西都被传递给主机。

此外,当我们通过嵌入更多的闪存芯片来增加SSD的带宽时,ZNS存储系统将涉及收益递减。ZNS设备的区域大小将被确定为足够大,以利用SSD内部闪存芯片的并行性。因此,更高带宽的ZNS SSD将提供更大的区域大小,而文件系统必须相应地使用更大的段大小。然后,主机遭受到更严重的段压缩开销,因为开销通常与段大小成比例增加。为了提高IO性能,克服收益递减的问题,需要进行主机-设备联合设计,将段压缩的每个子任务放在最合适的位置,而不损害原始ZNS的利益,而不是简单地将GC开销从SSD转移到主机。

​03 方法

​为了降低主机端做垃圾回收所带来的开销,本文提出三种方法通过协同垃圾回收优化来降低开销。

1.基于内部区域压实(IZC)的垃圾回收

传统的段压实过程如图1(a)所示,待回收区域中所有的有效数据都需要读取到主机端,再写到目标区域中。这个过程需要大量的读写以及元数据更新操作,会占用主机端的资源带来性能的下降。相比于传统的段压实,基于IZC的垃圾回收通过将未修改的有效数据的复制交付给SSD,并且利用SSD的copyback操作进行内部的数据复制,从而降低主机端的资源占用,优化系统性能。图1(b)是IZC方案下的压实过程,过程如下:普通段压实的数据拷贝任务被拷贝卸载(3)所取代,它发送zone_compaction命令来传输块拷贝信息(即源和目标LBA)。因为目标数据没有被加载到主机页面缓存中,所以不需要相应的页面缓存分配。固态硬盘内部控制器可以有效地安排几个读和写操作,同时最大限度地提高闪存芯片的利用率。因此,段压实的延迟可以大大减少。此外,存储内的块复制可以利用copyback操作。更为具体的执行流程建议阅读原文相关部分。

62ad58f8-16d9-11ee-962d-dac502259ad0.jpg

图1段压实过程对比图

2.稀疏的顺序重写,对F2FS的Threaded Logging提供支持

为了消除传统段压实的开销,F2FS提出的Threaded Logging机制为段压实提供了全新的思路。由于ZNSSSD不支持随机写的功能,所以F2FS都是关闭Threaded Logging机制。本文提出了影子映射的方式,使得ZNSSSD对Threaded Logging提供支持,从而优化段压实的开销。通过TL_open命令打开的zone会分配一个影子zone,并通过映射表来记录对应关系,同时维护一个bitmap记录有效信息。例如,在图2中,SSD为zone1(1)分配了一个LogFBG,FBG 15。对于TL_opened区,该区的数据块被分配到两个FBG中,即原始FBG(FBG6)和LogFBG(FBG 15)。因此,这两个FBG必须作为该区的映射FBG来维护。为了处理一个读取请求,SSD通过比较目标LBA和WP来识别最新数据的块位置。如果目标LBA在WP后面(目标LBA < WP),则访问LogFBG。否则,原始FBG将被访问,以满足读取请求。当TL_opened区最终被关闭时,LogFBG取代了原来的FBG,它被重新分配以备将来使用。

62c20064-16d9-11ee-962d-dac502259ad0.jpg

图2Threaded Logging支持示意图

考虑插入顺序,有两种模式:

以LBA为顺序插入:如图2,当SSD收到对第0块的两个写请求时,它从FBG 6读取A和B的跳过的块,将它们与主机发送的P和Q的块合并,并在LogFBG处写下一个完整的块。在处理完对第0块的写请求后,SSD可以通过检查该区的有效位图来感知第1块将被跳过。为了让WP提前准备好对第2块的写请求,被跳过的那块必须被复制到LogFBG中。因此,在处理一个写请求后,如果以下逻辑块在有效位图中被标记为有效,ZNS+ SSD在调整WP的同时将它们复制到LogFBG。这种类型的插入被称为LBA有序插入(LP),每次插入都是在区的当前WP进行,以遵循LBA有序的写入约束。

以PPA为顺序插入:在图2的例子中,在0号和2号的写入请求到达之前,3号可以被复制,因为它们使用不同的闪存芯片。如果第1块已经被复制,即使第2块和第4块的写请求还没有到达,第5块也可以被复制。我们称这种技术为PPA有序插入(PP),它只考虑PPA有序的写约束。每当一个闪存页在LogFBG被编程时,PPA-ordered plugging就会检查对应的闪存块中映射到下面闪存页的块的有效性,并提前发出该闪存块的所有可能的插入操作。然而,如果发出过多的插入操作,可能会干扰用户的IO请求处理。为了解决这个问题,当目标闪存芯片处于空闲状态时,插入操作将在后台进行处理。如果没有足够的空闲时间,当该区的WP必须通过跳过的区块位置时,它们就会被处理。

3.混合段回收策略

通过上述的两个策略,目前有两种垃圾回收的方式。为了权衡在垃圾回收时选取哪种方式,本文提出了两种垃圾回收策略的cost-benefit计算公式,在垃圾回收时总是选取开销最小的垃圾回收方式。Npre-inv和Nvalid分别表示pre-invalid块的数量和有效块的数量。fplugging(N)是N个区块的存储内插入成本。Nnode和Nmeta分别表示修改后的节点块和元数据块的数量。fcopy(N)和fwrite(N)分别是N块的复制成本和写入成本。Bcold表示预测的未来冷块迁移的收益。公式中部分值很难计算或者无法计算,本文对这些值采取近似估计。

62d6ce72-16d9-11ee-962d-dac502259ad0.jpg62e20166-16d9-11ee-962d-dac502259ad0.jpg

图3cost-benefit权衡公式

​04 实验结果

​评估实验是基于FEMU的SSD仿真器评估了ZNS+ SSD的性能。相关延迟配置如下:

62f1bc1e-16d9-11ee-962d-dac502259ad0.jpg

表1实验平台设置

​实验性能对比包含三个方面,分别为段压实、Threaded Logging和SSD内部芯片利用率。

​段压实性能:该实验主要基于IZC的垃圾回收策略效果进行评估。通过将copy操作卸载到SSD内部,并且利用copyback操作,优化垃圾回收过程,降低垃圾回收开销。实验结果验证了IZC策略可以很好的降低垃圾回收开销。

630e507c-16d9-11ee-962d-dac502259ad0.jpg

图4段压实实验结果

Threaded Logging性能:该实验主要对支持Threaded Logging后垃圾回收的性能评估。ZNS+在所有基准上都优于ZNS和IZC。ZNS+的吞吐量比ZNS高约1.33-2.91倍。与IZC相比,ZNS+将varmail工作负载的节点和元数据写入流量减少了约48%。在所有的工作负载中,超过85.8%的回收段是由ZNS+的线程记录处理的,因为定期检查点方案限制了预无效块的数量。

6340324a-16d9-11ee-962d-dac502259ad0.jpg

图5支持Threaded Logging实验结果

SSD内部芯片利用率:该实验主要对SSD内部芯片利用率进行评估。在所有的工作负载中,IZC和ZNS+的芯片利用率都比ZNS高。ZNS+(LP)可以利用两个连续的写请求之间的空闲时间,而ZNS+(PP)可以通过利用空闲的闪存芯片,将插入操作与正常的写请求处理重叠起来。因此,与ZNS+(PP)相比,ZNS+(LP)显示出更高的芯片利用率。

634842fa-16d9-11ee-962d-dac502259ad0.jpg

图6ZNSSSDvsStream SSD性能对比实验结果

05总结

目前的ZNS接口在主机上施加了很高的存储回收开销,以简化SSD。为了优化整体的IO性能,必须将每个存储管理任务放在最合适的位置,并使主机和SSD合作。为了将块复制操作卸载到SSD上,本文设计了ZNS+,它支持存储区内的压实和Threaded Logging。与传统的段压实相比,在性能和SSD内部芯片利用率有很大的改进。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8441

    浏览量

    150704
  • 数据传输
    +关注

    关注

    9

    文章

    1788

    浏览量

    64401
  • 带宽
    +关注

    关注

    3

    文章

    896

    浏览量

    40785

原文标题:如何优化ZNS下的垃圾回收?

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    固态硬盘垃圾回收方法

    由于NAND闪存的固有限制,写前擦除和擦除粒度较大,基于NAND Flash的固态硬盘(SSD)需要执行垃圾回收以重用失效页。然而垃圾回收带来的高开销会显著降低SSD的性能,也会直接影
    发表于 12-03 10:50 2次下载
    固态硬盘<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>方法

    基于逻辑区间热度的垃圾回收算法

    针对现有的NAND闪存垃圾回收算法中回收性能不高,磨损均衡效果差,并且算法内存开销大的问题,提出了一种基于逻辑区间热度的垃圾回收算法。该算法
    发表于 12-05 18:27 0次下载
    基于逻辑区间热度的<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法

    电子垃圾回收产业的隐秘世界

    如今的电脑和手机等电子设备换代频繁、淘汰迅速,因此电子垃圾回收利用也成了一个在全球蓬勃发展的产业。
    发表于 01-22 19:20 1.1w次阅读

    Jvm垃圾回收机制及性能调优实战

    JVM中自动检测并移除不再使用的数据对象的这种机制称为:垃圾回收,简称GC。JVM通过使用垃圾收集器及使用相应的垃圾回收算法将内存中不再被使
    发表于 04-03 14:31 2次下载

    交大发布可回收垃圾分拣机器人,实现助力全国垃圾分类回收工作

    6月4日消息,交大中英国际低碳学院可回收垃圾分拣机器人,更是打破国外技术垄断,可实现每小时分拣垃圾5400次,并在大量垃圾中精准识别可回收
    的头像 发表于 06-04 14:31 2933次阅读

    智能垃圾回收机器人的应用优势是什么

    为什么需要垃圾回收机器人? 首先,垃圾分类回收是实现地球资源循环利用至关重要的一环,对于可持续发展有重大意义。垃圾分类也是对付
    发表于 07-22 09:26 2019次阅读

    智能垃圾回收机器人的应用优势有哪些

    为什么需要垃圾回收机器人? 首先,垃圾分类回收是实现地球资源循环利用至关重要的一环,对于可持续发展有重大意义。垃圾分类也是对付
    发表于 08-17 16:08 4181次阅读

    生活垃圾数据化分类回收方法及其回收系统(机械部分)

    一种生活垃圾数据化分类回收方法及其回收系统(机械部分)(1).doc 上传完成 删除 标题一种生活垃圾数据化分类回收方法及其
    发表于 11-05 18:18 0次下载

    详解JVM的垃圾回收算法和垃圾回收

    JVM 垃圾回收机制是对堆中没有使用的对象进行回收,那么判断对象是否“存活”就至关重要。在判断对象是否“存活”的方法中,我们会介绍引用计数算法和可达性分析法。
    的头像 发表于 03-29 13:55 1461次阅读
    详解JVM的<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法和<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>器

    Kubernetes容器垃圾回收的策略

    Kubernetes的垃圾回收由kubelet进行管理,每分钟会查询清理一次容器,每五分钟查询清理一次镜像。在kubelet刚启动时并不会立即进行GC,即第一次进行容器回收为kubelet启动一分钟后,第一次进行镜像
    的头像 发表于 08-15 09:16 1465次阅读

    JVM入门之垃圾回收算法

    根据如何判定对象是垃圾垃圾回收算法分为两类:1、 「引用计数式垃圾收集」 (判定垃圾是通过引用计数器)别名:直接
    的头像 发表于 02-10 11:40 764次阅读
    JVM入门之<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法

    使用图像识别来识别可回收和不可回收垃圾

    电子发烧友网站提供《使用图像识别来识别可回收和不可回收垃圾.zip》资料免费下载
    发表于 06-20 09:17 0次下载
    使用图像识别来识别可<b class='flag-5'>回收</b>和不可<b class='flag-5'>回收</b>的<b class='flag-5'>垃圾</b>

    智能垃圾回收箱及其控制系统

    智能高效远程控制智能垃圾回收箱本文设计了基于机械传动、嵌入式系统和物联网技术的智能垃圾回收箱及控制系统,包括结构、硬件和软件设计,以及基于机智云后台服务器的操作系统,实现了用户信息识
    的头像 发表于 04-13 08:10 1074次阅读
    智能<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>箱及其控制系统

    智能垃圾回收箱控制系统硬件设计

    智能高效远程控制智能垃圾回收箱控制系统硬件部分的选型与设计是整个产品的基础,所有功能的实现都要围绕其进行开发。本章对智能垃圾回收箱控制系统的硬件进行详细设计。智能
    的头像 发表于 04-13 08:10 753次阅读
    智能<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>箱控制系统硬件设计

    智能垃圾回收箱功能实验

    需要系统地介绍智能垃圾回收箱软件硬件设计完成后的设备运行状况,包括正常工作和问题调试。同时,也要描述当所有设备正常工作时智能垃圾回收箱的操作流程。01硬件模块的试验在智能
    的头像 发表于 05-24 08:10 378次阅读
    智能<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>箱功能实验