ZNS SSD+F2FS文件系统|如何降低GC开销?--2

2024-04-24 14:12

本文主要是介绍ZNS SSD+F2FS文件系统|如何降低GC开销?--2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在F2FS(Flash-Friendly File System)中,Over-provisioning,OP配置是一种优化策略,旨在通过预留一部分存储空间不分配给用户使用,以提升文件系统的性能、耐用性和可靠性。在F2FS与ZNS SSD的结合中,OP策略得到了进一步优化。由于ZNS SSD具有固定的区域(zone)大小和顺序写入特性,F2FS能够更加精确地管理OP配置空间,以适应ZNS特有的存储管理需求。:

  • 基于section的OP配置:F2FS在ZNS SSD上按照section(一组连续segment)进行OP配置。section的设计与ZNS SSD的zone大小相对应,确保在section内部按顺序使用segment,以符合ZNS的顺序写入要求。通过预留一定数量的section作为OP配置空间,F2FS可以更有效地控制垃圾收集活动,尤其是在高利用率情况下。

  • 动态调整OP配置:根据实际工作负载和性能需求,F2FS允许系统管理员或自动调整算法动态改变OP配置的数量。例如,对于写密集型应用,可能需要增加OP配置以减少垃圾回收的压力;反之,对于读取为主的应用,可以适当减少OP配置以提高存储利用率。

  • 平衡磁盘利用率与性能:在F2FS中,OP配置的大小是一个关键的权衡因素。过高的OP配置虽然可以显著减少垃圾收集,但会降低硬盘的实际可用容量。相反,过低的OP配置可能导致频繁的垃圾收集和性能下降。因此,F2FS通过实验和数据分析,寻找最优的OP配置比例,以在硬盘利用率和性能之间找到最佳平衡点。

在F2FS与ZNS SSD的环境中,OP配置与垃圾回收过程密切相关。当OP配置充足时,文件系统可以在清理无效数据(即执行垃圾回收)时,有更多的空间可供移动有效数据,从而避免因空间不足导致的性能瓶颈。此外,OP配置还能为文件系统提供额外的缓冲空间,使其在处理突发写入请求时有足够的余地,进一步降低垃圾回收的触发频率。

图片

比如,上图中在给定条件下(45个zone的ZNS SSD、95%文件系统利用率)最适宜的F2FS预留section数量。选择这些配置可以最大限度地减少垃圾收集(GC)开销,提高I/O密集型应用的执行效率。

在OP配置空间较低的配置下,当运行I/O密集型应用时,系统会出现崩溃现象。究其原因,LFS模式下的空闲段搜索机制在面对高硬盘利用率时,尤其是在ZNS SSD(分区域命名空间固态硬盘)上,无法有效地找到可用的空闲段进行数据写入

F2FS具备两种垃圾回收GC模式:前台(FG)模式和后台(BG)模式。其中,FG模式在可用空闲段不足时触发,负责紧急的垃圾回收任务;而BG模式则周期性地在文件系统空闲时进行,即使在无I/O操作时也会运行,侧重于预防性的空间清理和整理。

针对ZNS SSD的特性,研究者发现尽管F2FS利用大比例的OP配置空间在一定程度上降低了GC开销,但在高磁盘利用率下,特别是在写密集型工作负载中,GC过程仍可能导致显著的性能下降。为解决这一问题,研究者提出了以下优化措施:

  1. 改进的空闲段查找策略:针对低OP配置空间配置下系统易崩溃的问题,研究者在LFS模式中新增了空闲段搜索机制。当常规的向前搜索无法找到可用的空闲段时,系统会从主数据区的起始位置开始,通过位图遍历整个设备,直至找到空闲段为止。这一改动显著降低了在多写应用高利用率场景下系统崩溃的风险。

在LFS模式下,F2FS采用向前(右方向)搜索的方式寻找空闲段。当接收到新的写请求时,F2FS首先检查当前段是否有足够的空间处理这些写入。如果没有,它会尝试在当前段右侧使用位图搜索下一个空闲段。若向前搜索无法找到可用的空闲段,则会触发警报并向用户侧发送通知,最终导致应用程序崩溃。

相比之下,在传统的SSD上,由于采取一对一的段与section映射,即使在高硬盘利用率下,也较容易在右侧找到空闲段。然而,ZNS SSD的特性决定了其section数量与zone数量相匹配,这意味着在高利用率下,尤其是在存在多个并发写入者的情况下,ZNS SSD上很难找到可用的空闲section。

图片

上图显示,采用新搜索策略的ZNS-OP-SS配置能够在整个设计空间(包括高利用率区域)内保持稳定运行,而未采用新策略的ZNS-OP配置在磁盘利用率增高时性能明显下降,甚至可能导致应用崩溃。

  1. 并行垃圾回收(P-GC)方案鉴于ZNS SSD的顺序写入特性使得LFS模式无法重用无效块,必须先清理整个section才能重用其中的脏块,这加速了空闲段的消耗并触发GC。为应对这一挑战,研究者提出了P-GC方案。当FG GC模式触发时,P-GC策略会根据victim section中有效块数量与总块数之比决定是否采用并行方式执行GC。若有效块数量大于或等于总块数的一半,则采用并行GC,否则采用单线程处理。通过并行化处理,P-GC能够加速GC过程,从而减少由GC导致的性能下降。

图片

为了验证上述优化措施的有效性,研究者进行了详细的实验评估。实验结果表明,采用P-GC方案后,F2FS在各种工作负载下,包括写密集型工作负载,平均性能提升可达42%。这充分证明了P-GC方案在降低GC开销、提升文件系统性能方面的显著效果。

图片

在FG GC(前台垃圾回收)期间,由于GC线程的工作,应用程序会被暂停,直到整个section被完全释放。这突显出FG GC的延迟对于决定应用程序性能至关重要。

图片

根据实验室数据显示,有力地证实了P-GC方案能够有效地管理慢速的GC请求,显著缩短GC过程中的延迟,从而提升应用程序的性能,有效地解决了由于FG GC延迟导致的性能瓶颈问题。

  • 对于YCSB-A workload:P-GC的平均速度比Vanilla(原始或基线方案)高出29%,并且在最慢的情况下,P-GC的表现比Vanilla快超过2.03倍。

  • 对于YCSB-F workload:P-GC的平均速度比Vanilla快7%。而在最慢的情形下,P-GC的速度更是达到了Vanilla的2.98倍。


 

参考文献:

  • Dongjoo Seo, Ping-Xiang Chen, Huaicheng Li, Matias Bjørling, and Nikil Dutt. 2023. Is Garbage Collection Overhead Gone? Case study of F2FS on ZNS SSDs. In 15th ACM Workshop on Hot Topics in Storage and File Systems (HotStorage ’23), July 9, 2023, Boston, MA, USA. ACM, New York, NY, USA, 7 pages.

  • https://www.kernel.org/doc/html/latest/filesystems/f2fs.html


如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • 漫谈HAMR硬盘的可靠性

  • 万物皆可计算|下一个风口:近内存计算

  • SSD数据错误如何修复?

  • CXL与PCIe世界的尽头|你相信光吗?

  • 全景剖析SSD SLC Cache缓存设计原理

  • 存储革新:下一代低功耗PCM相变存储器

  • 3D DRAM虽困难重重,最快明年到来

  • 字节跳动入局存储内存SCM

  • 解读“CFMS中国闪存市场峰会”存储技术看点

  • 首个业内DNA存储技术规范发布

  • 如何突破SSD容量提升的瓶颈?

  • 固态存储是未来|浅析SSD架构的演进与创新技术

  • 论文解读:NAND闪存中读电压和LDPC纠错码的高效设计

  • 华为新发布磁电存储“王炸”,到底是什么?

  • SSD LDPC软错误探测方案解读

  • 关于SSD LDPC纠错能力的基础探究

  • 存储系统如何规避数据静默错误?

  • PCIe P2P DMA全景解读

  • 深度解读NVMe计算存储协议

  • 对于超低延迟SSD,IO调度器已经过时了吗?

  • 浅析CXL P2P DMA加速数据传输的原理

  • NVMe over CXL技术如何加速Host与SSD数据传输?

  • 浅析LDPC软解码对SSD延迟的影响

  • 为什么QLC NAND才是ZNS SSD最大的赢家?

  • SSD在AI发展中的关键作用:从高速缓存到数据湖

  • 浅析不同NAND架构的差异与影响

  • SSD基础架构与NAND IO并发问题探讨

  • 字节跳动ZNS SSD应用案例解析

  • CXL崛起:2024启航,2025年开启新时代

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

图片

如果您也想针对存储行业分享自己的想法和经验,诚挚欢迎您的大作。
投稿邮箱:Memory_logger@163.com (投稿就有惊喜哦~)

《存储随笔》自媒体矩阵

图片

更多存储随笔科普视频讲解,请移步B站账号

图片

如您有任何的建议与指正,敬请在文章底部留言,感谢您不吝指教!如有相关合作意向,请后台私信,小编会尽快给您取得联系,谢谢!

这篇关于ZNS SSD+F2FS文件系统|如何降低GC开销?--2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/931978

相关文章

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

word转PDF后mathtype公式乱码以及图片分辨率降低等一系列问题|完美解决

word转PDF后mathtype公式乱码以及图片分辨率降低等一系列问题|完美解决 问题描述 最近在投一篇期刊论文,直接提交word文档,当时没有查看提交预览,一审审稿意见全是:公式乱码、公式乱码、乱码啊!!!是我大意了,第二次提交,我就决定将word文档转成PDF后再提交,避免再次出现公式乱码的问题。接着问题又来了,我利用‘文件/导出’或‘文件/另存为’的方式将word转成PDF后,发现公式

使用jetty和mongodb做个简易文件系统

使用jetty和mongodb做个简易文件系统 - ciaos 时间 2014-03-09 21:21:00   博客园-所有随笔区 原文   http://www.cnblogs.com/ciaos/p/3590662.html 主题  MongoDB  Jetty  文件系统 依赖库: 1,jetty(提供http方式接口) 2,mongodb的java驱动(访问mo

降低安全违规行为发生率,节省人工监管成本的智慧园区开源了

智慧园区场景视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。 它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。充分利用现有的摄像头设备,无需大规模更换,降低成本同时提升系统的实施效率。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。 项目搭建地址 基础项目搭建地址:

Kubernetes集群安装、配置glusterfs文件系统

环境介绍: 3台Centos 7.4系统节点,已经部署好Kubernetes,同时复用这3台机器作为gluster存储节点: hostIPK8s roleg1-nasp12.12.10.11master + nodeg3-nasp12.12.10.13nodeg4-nasp12.12.10.14node 安装、配置glusterfs: 在物理主机上采用yum安装的方式,步骤如下: 1

Ubuntu构建只读文件系统

本文介绍Ubuntu构建只读文件系统。 嵌入式系统使用过程中,有时会涉及到非法关机(比如直接关机,或意外断电),这可能造成文件系统损坏,为了提高系统的可靠性,通常将根文件系统设置为只读,将其他需要读写的数据放置在另外开辟的一个磁盘分区,本文针对嵌入式系统常用的Ubuntu操作系统构建只读文件系统。 1.基本原理 1)OverlayFS简介 OverlayFS(Overlay File Sy

工作效率的提升——如何高效沟通,有效降低沟通成本

如果你的上班时间是9点到18点,除去午休时间1.5h,剩余7.5h,那么你真正的有效工作时间又为多少呢? 如果你是一个财政/公司流程管理的知识产权审核人或销售许可申请负责人/销售/运营,沟通就是你的主要工作内容,如何更加清晰有效,直白明了,让不明事件原委的申请人或者新人,快速的了解需要自己准备或者更改的点,进而提高自己的工作效率呢? 如果你是测试人员/产品经理/开发人员,如何尽快让大家同频道沟

Spark学习之路 (十四)SparkCore的调优之资源调优JVM的GC垃圾收集器

《2021年最新版大数据面试题全面开启更新》 欢迎关注github《大数据成神之路》 目录 一、概述 二、垃圾收集器(garbage collector (GC)) 是什么? 三、为什么需要GC? 四、为什么需要多种GC? 五、对象存活的判断 六、垃圾回收算法 6.1 标记 -清除算法 6.2 复制算法 6.3 标记-整理算法 6.4 分代收集算法 七、垃圾收集器 7.1 Serial收集器

Kafka 为了避免 Full GC,竟然还在发送端设计了内存池,自己管理内存,太巧妙了...

一、开篇引出一个 Full Gc 的问题 在上一篇文章中,我们讲到了 Kafka 发送消息的八个流程,并且着重讲了 Kafka 封装了一个内存结构,把每个分区的消息封装成批次,缓存到内存里。 如下图所示: 上图中,整体是一个 Map 结构,Map 的 key 是分区,Map 的值是一个队列;队列里有一个个的小批次,里面是很多消息。 这样好处就是可以一次性的把消息发送出去,不至于来一条发送一条,

JVM中的GC过程

堆内存结构:在详细讨论GC过程之前,需要了解JVM堆内存的结构。JVM堆内存通常被分为新生代(Young Generation)和老年代(Old Generation),其中新生代又进一步细分为Eden区(Eden Space)和两个Survivor区(S0和S1,也称为From和To区)。从JDK 1.8开始,永久代(Permanent Generation)被元空间(Metaspace)所取代