ZNS SSD设计架构及性能优化

存储技术

600人已加入

描述

本工作发表于ATC 2021。当前基于闪存的 SSD 保留了几十年前的块接口,这使得在容量过度配置、用于页面映射表的DRAM、垃圾回收开销以及试图减轻垃圾回收的主机软件复杂性等方面付出了巨大的代价。分区命名空间 (ZNS) 接口为这种不断增加的块接口税提供了庇护。ZNS使基于闪存的SSD具有更高的性能和更低的每字节成本。通过将管理擦除块内数据组织的责任从FTL层转移到主机软件,ZNS消除了设备内LBA到页的映射、垃圾回收和OP空间。

SSD

01 背景

目前基于闪存的固态硬盘保持着几十年前的块层接口,这在容量超额配置、页面映射表的DRAM、垃圾回收开销以及试图减轻垃圾回收的主机软件复杂性等方面带来了巨大的代价。块层接口向其上层展现出来的是一个一维的LBA数组,每个LBA都可以被读写,其最初的引用是为了隐藏存储介质的不同。然而随着存储介质的迭代,为flash based存储设备维护块层接口语义代价越来越大,如flash based SSDs中FTL的运转需要大量DRAM,GC需要OP空间,并且设备请求命令延迟被GC干扰后有抖动。

02 问题

块接口税

现代存储设备,如SSD和SMR HDD,采取的是与块层接口不匹配的记录技术。这种不匹配导致了性能和操作成本的降低。在基于闪存的固态硬盘上,一个空的闪存页可以在写入时被编程,但覆盖它需要一个擦除操作,这个操作只能在擦除块(一组一个或多个闪存块,每个块包括多个页面)的粒度上发生。对于固态硬盘暴露出的块层接口,FTL必须管理一些功能,如使用随处写的方法进行就地更新,将主机逻辑块地址(LBA)映射到物理设备页面,垃圾回收陈旧数据,并确保擦除块的均衡磨损。

但是,FTL对性能和操作成本有很大影响。为了避免就地更新的媒介限制,每个LBA写入都被引导到下一个可用的位置。因此,主机放弃了对物理数据放置的控制,而由FTL执行。此外,旧的、陈旧的数据版本必须被垃圾回收,导致正在进行的操作的性能不可预测性。由于需要进行垃圾回收,必须在设备上分配物理资源。这就要求媒体超额配置总容量的28%,以便在物理地址之间移动数据。还需要额外的DRAM来维持逻辑和物理地址之间的易失性映射。容量超额配置和DRAM是固态硬盘中最昂贵的部件,导致每千兆字节可用容量的成本更高。

SSD

图1 多线程写入工作负载的吞吐量

现有的减税策略可能是低效的

降低块层接口税主要包含两种方法:支持流的SSD (Stream SSD) 和开放通道SSD (OCSSD)。

Stream SSD允许主机用流提示来标记其写入命令。流提示由Stream SSD解释,允许它将传入的数据区分到不同的擦除块上,从而提高固态硬盘的整体性能和介质寿命。流式固态硬盘要求主机仔细标记具有相似寿命的数据,以减少垃圾回收。如果主机将不同寿命的数据混合到同一个数据流中,Stream SSD的行为与块层接口固态硬盘类似。Stream SSD必须携带资源来管理这样的事件,所以Stream SSD不会舍弃块层接口固态硬盘的额外介质超额配置和DRAM的成本。

OCSSD允许主机和固态硬盘通过一组连续的LBA块进行合作。OCSSD可以将这些块暴露出来,使其与媒体的物理擦除块边界一致。这消除了设备内的垃圾收集开销,并减少了媒体超额配置和DRAM的成本。在OCSSD中,主机负责数据放置。这包括底层介质的可靠性管理,如磨损平衡,以及特定的介质故障特征(取决于OCSSD类型)。这有可能提高固态硬盘的性能和介质寿命,但主机必须管理不同的固态硬盘实现的差异,以保证耐用性,使接口难以采用,并需要不断的软件维护。

03 方法

NVMe分区命名空间命令集规范,简称为ZNS,最近被引入作为基于闪存的SSD的新接口标准。ZNS接口代表了主机软件和基于闪存的SSD之间的新功能划分。ZNS提供了对这种不断增长的块层接口税的庇护。

Zoned存储模型

Zoned Storage model,最初的思想来源于SMR HDDs和OCSSDs,诞生于无需兼容块接口同时又满足存储设备的需要。ZNS接口提供了与媒介无关的下一代存储接口。

Zoned Storage model中存储设备的管理单位为zone,zone是一组连续LBA的集合。在zone中,支持random read,但是write必须是顺序的,对zone的over write需要对整块zone进行reset。

每个zone有其各自的状态,如empty、full、opened、closed,zone的状态表达了其在该zone中的操作限制。且由于资源的限制,处于opened状态的zones的数量受到设备限制。

SSD

图2 zone逻辑概念图

ZNS SSD设计架构

ZNS SSDs的设计主要考虑两方面,一是硬件方面,二是使应用适应ZNS接口方面。

1. 硬件方面:

ZNS SSDs放弃了对随机写的支持,随之而来的使由host端负责GC工作。在ZNS SSDs' FTL的设计需要考虑以下的权衡。

Zone Sizing:Zone Size不同产生的效果也不同。Size小的则host有更多的数据放置自由度,代价是zone可能无法横跨所有die而对单个zone的读写达不到flash的满带宽。而Size大的则host放置数据自由度低,而带来的结果是单个zone的读写带宽很高。

Mapping Table:块层接口SSDs中的FTL维护着lba粒度的全相联mapping table,1TB的存储介质大约需要1GB的mapping table。在ZNS SSDs中可以考虑将更改mapping table的粒度,如到zone粒度,以减少DRAM的使用。

Device Resources:每个opened zone都需要一定的设备资源来维护元数据。同时SSDs内部资源有限,如DRAM、Channel等。ZNS SSDs中所有的zones共享这些资源,所以SSDs进行了active zones的数量限制。通常可限制同时活动的zones的数量为8-32个。

2. 软件方面:

目前讨论三种使主机软件适配于ZNS interface的方法,分别是主机端FTL、文件系统和端到端数据放置。

Host-side FTL:主机端FTL充当应用端随机写、in-place update与ZNS SSDs端顺序写语义的桥梁。主机端FTL在主机端控制数据放置和垃圾回收,暴漏给应用传统的块层接口。

File Systems:目前的文件系统大部分都是in-place writes,并不适应Zoned存储模型。一些LFS文件系统如f2fs、btrfs和zfs已经添加了对Zones的支持。但如f2fs和btrfs对zone model的支持仅限于在SCSI中的ZAC/ZBC,本文是对f2fs进行修改以对ZNS's zone model进行支持。

End-to-End Data Placement:理想情况下zone-write语义应该与应用中的数据结构完全匹配,以达到最小的写放大、最高的带宽和最低的延迟。此类应用的合适候选者为RocksDB、CacheLib等。本文展示了ZenFS作为RocksDB的存储后端的性能。

SSD

图3 ZenFS架构图

04 实验结果

评估实验是基于一个生产型固态硬盘硬件平台上进行的,该平台该平台可以将自己暴露为块状接口固态硬盘或ZNS固态硬盘。硬件平台的配置如下:

SSD

表1 实验平台设置

实验性能对比包含三个方面,分别为原始设备I/O性能、端到端的应用性能和与ZNS SSD vs Stream SSD。

原始设备I/O性能:该实验主要对ZNS SSD和传统块层接口SSD的吞吐量进行评估。ZNS SSD由于最大化减小了块层接口税,所以体现出更优秀的吞吐量。块层接口SSD的目标写入速度高达300MiB/s(0% OP)和500MiB/s(28% OP),而ZNS固态硬盘的写入速度为1GiB/s。实验结果验证了ZNS SSD可以很好的避免块层接口税开销问题。

SSD

图4 吞吐量优化实验结果

    端到端的应用性能:该实验主要对RocksDB在不同的文件系统作为存储后端的性能评估。通过修改文件系统为ZNS SSD管理提供支持,从而获取更优的吞吐量。两个基准测试都显示XFS和F2fs设置的性能低于F2fs(ZNS)和ZenFS。最重要的影响出现在overwrite基准中,其中垃圾收集的开销严重影响了整体性能。ZenFS比XFS快183%,而f2fs(ZNS)的表现 比XFS好42%,比f2fs好33%。

SSD

图5 IOPS优化实验结果

ZNS SSD vs Stream SSD:该实验主要对ZNS SSD和Stream SSD的性能评估。在具有 7% OP并且在 XFS 和 f2fs 之上启用或禁用流的块层接口 SSD上执行的fillrandom和overwrite基准测试的吞吐量。在启用流的 SSD 上,XFS上的RocksDB在fillrandom和overwrite上分别提高了11%和16%的吞吐量。在启用流的 SSD 上,f2fs上的RocksDB在fillrandom和overwrite分别提高了24%和4%的吞吐量。与f2fs(Streams)相比,f2fs (ZNS)的吞吐量分别提高了 17% 和 44%。

SSD

图6 ZNS SSD vs Stream SSD性能对比实验结果

05 总结

ZNS使基于闪存的固态硬盘具有更高的性能和更低的每字节成本。通过将管理擦除块内数据组织的责任从FTL转移到主机软件,ZNS消除了设备内LBA到页的映射、垃圾回收和OP空间。文章对ZNS专用的F2FS和RocksDB实施的实验表明,与在相同的SSD硬件上运行的传统FTL相比,在写吞吐量、读尾部延迟和写放大方面有很大的改进。

致谢

感谢本次论文解读者,来自华东师范大学的准博士生宋云鹏,主要研究方向为软硬件协同设计。

编辑:黄飞

 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分