全文概览
在现代存储技术中,SSD(固态硬盘)因其高速读写性能和低延迟特性,成为数据中心和云计算环境中不可或缺的一部分。然而,随着多租户环境和混合工作负载的普及,SSD的性能优化和资源管理成为亟待解决的挑战。传统的SSD管理方式往往难以应对复杂的工作负载,导致性能波动和资源浪费。
FDP(Flexible Data Placement,灵活数据放置)技术的出现,为SSD的性能优化和资源管理提供了全新的解决方案。通过智能地将数据放置在与闪存介质特性相匹配的位置,FDP不仅能够显著提升SSD的写入带宽,还能降低写入放大因子(WAF),延长SSD的使用寿命。此外,FDP支持多命名空间隔离,能够在多租户环境中实现性能和服务质量(QoS)的优化。
本文将深入探讨FDP多命名空间实验的设计与实施,分析其在不同工作负载下的性能表现,并揭示其在提升SSD性能和优化资源管理方面的独特价值。
阅读收获
了解FDP如何通过智能数据放置优化SSD性能。 掌握FDP在多租户和混合工作负载环境中的应用价值。 学习如何通过FDP降低写入放大因子(WAF),延长SSD使用寿命。 深入理解FDP与其他存储技术(如ZNS)的差异及其适用场景。 FDP Multi-Namespace Experiment.png
什么是灵活的数据放置? 提高应用性能并延长SSD的耐用性——减少SSD写入放大(WAF)。 软件智能地将数据放置在与闪存工作方式(如块、通道等)兼容的SSD上。 改进的隔离性带来更好的服务质量。 完全向后兼容,支持命名空间。 根据计算工作负载的性能扩展SSD容量。 降低超额配置 → 提高设备利用率 → 降低TCO(总拥有成本)。 降低WAF → 提高耐用性 → 降低TCO。 FDP Multi-Namespace Experiment-1.png
FDP 使用案例 云原生环境 :多租户、容器化工作负载可以从FDP优化垃圾回收和提高服务质量(QoS)的能力中受益。缓存应用程序 :FDP可以显著提高像CacheLib这样的缓存解决方案的效率和性能,这些是最流行的超大规模应用程序之一。混合工作负载 :FDP可以通过将混合工作负载分开,改善服务质量(QoS)和性能。写密集型应用程序 :FDP减少写入放大(WAF)的能力对写入密集型工作负载尤其有益,通过多个写入流延长SSD的使用寿命,并确保更稳定的性能。Note
大容量QLC-SSD 在读场景的性能和容量相对来说是能满足AI需求的,关键是写、读写混合场景,这是需要重点优化的。
FDP Multi-Namespace Experiment-2.png
FDP 中的多个命名空间 减少“噪声邻居”效应 :在多租户环境中,一个应用的高负载可能会影响共享相同SSD的其他工作负载的性能。FDP通过命名空间隔离最小化这种干扰,确保每个应用的性能一致。优化垃圾回收 :FDP在每个RUH(资源使用单元)内优化垃圾回收(GC)。这意味着一个命名空间的GC过程不会影响其他命名空间的性能,从而使整体性能更加平稳、可预测。简化管理 :命名空间为不同的应用或租户提供了一种逻辑方式来组织和管理数据。这种精细的控制简化了管理和故障排除工作。性能共享 :虽然一些虚拟机可能处于空闲状态,但其他虚拟机仍然可以获得最大SSD性能。Cite
关于 “噪声邻居” 的技术报道,SMI 在其 PerformaShape™ 的技术报道中曾设计过实验来验证,但更聚焦的是隔离读写带宽的相互影响,而此处的GC过程隔离,更多是强调小单元数据 shuffle 过程的稳定性,两者应该还是有差距的,但FDP对写带宽的帮助也是显著的。
SiliconMotion:多租户SSD的PerformaShape™算法
该文章详细介绍了PerformaShape™算法的工作原理和应用场景。主要内容包括:算法原理:基于双状态令牌桶算法,通过为每个QoS集合分配令牌桶来控制IO请求的速率和优先级,从而实现性能优化和资源隔离。 技术优势:能够平滑IO请求波动,隔离噪声邻居,充分利用SSD带宽,提高多租户环境下的服务质量(QoS)。 实测数据:通过模拟测试展示了PerformaShape™算法的效果,包括隔离嘈杂邻居、限制IO请求速率和提高整体性能等。 FDP Multi-Namespace Experiment-3.png
FDP 提高写入带宽 8个不同的写入线程,使用不同的块大小 通过FDP实现WAF=1 图表解释:
右侧的带宽图 展示了不同情况下的吞吐量比较:蓝色曲线代表启用FDP时的吞吐量(A_FDP)。 红色曲线代表未启用FDP时的吞吐量(D_non_FDP)。 通过FDP,吞吐量更为平稳,并减少了由WAF和垃圾回收引起的间隙。 下方的WAF图 展示了在不同吞吐量下的写入放大(WAF):启用FDP时,WAF保持在较低水平,表明写入放大较小,SSD的使用效率更高。 FDP Multi-Namespace Experiment-4.png
实验 - 多命名空间FDP(无SR-IOV) 启用FDP后,每个命名空间将获得自己的RUH(此驱动器最多可支持8个)。 无需软件开发更改。 使用Proxmox虚拟环境创建8个Ubuntu 22.04虚拟机(VM)。 为每个命名空间创建一个LVM并将其附加到虚拟机。 提供了Ansible playbook和脚本,链接如下:https://github.com/jmhands/scripts/tree/main/fdp FDP Multi-Namespace Experiment-5.png
该图描述了进行128k顺序写入的实验过程,以下为关键观察:
写入速度 尽管使用了8个写入流,系统仍能够保持较高的写入速度,并且写入数据达到峰值。平均等待时间 随着时间的推移,虚拟机的平均等待时间保持稳定,表明I/O操作的延迟较低。WAF = 1 实验中即使有多个写入流,写入放大(WAF)值保持为1,表明FDP有效地减少了写入放大的问题,确保SSD的高效使用。FDP Multi-Namespace Experiment-6.png
计算 WAF(写放大因子) 使用 OCP C0 日志页面来计算 NAND 写入: 使用 SMART 来计算主机写入: 在测试前后记录数据,并计算变化量(delta) 如果启用了 FDP,操作会更加简单!只需使用 nvme fdp stats
代码部分 : 脚本是一个用于计算 WAF 的 Bash 脚本,包含从 SMART 和 OCP 日志中提取数据的函数。它首先提取主机和物理媒体写入的字节数,然后计算和输出 WAF。
FDP Multi-Namespace Experiment-7.png
对照组:无 FDP 图片描述了在没有启用 FDP 的情况下,如何进行测试以计算写放大因子(WAF)。测试包括创建一个 7.68TB 的命名空间,使用 LVM 格式化,并为每个主机分配 940GB 的 virtio 驱动器。
通过运行 playbook,收集 SMART 数据,并执行 fio 测试。测试的结果展示了不同的写入块大小对带宽和 IOPS 的影响。最终计算得到的 WAF 为 1.7417。
FDP Multi-Namespace Experiment-8.png
无FDP测试数据是满足不同大小数据块磁盘读写IO特征的:
小文件 IOPS 更高,但写带宽很低; 大文件 IOPS 相对较低,但写带宽很高。 FDP Multi-Namespace Experiment-9.png
FDP 启用设置
FDP 配置博客链接[1] 删除命名空间,启用 FDP,检查配置,创建 8 个命名空间,连接到控制器 在每个命名空间上创建 LVMon,并为每个命名空间分配一个。 FDP Multi-Namespace Experiment-10.png
启用 FDP - 结果 运行相同的 playbook,这次每个虚拟机有自己的命名空间,每个命名空间使用不同的 RUH 它有效!WAF 降低到 1 背景 4k 随机读取提升了 182% 写入带宽增加了 150% 耐久性增加了 170% 应用程序不需要支持 FDP 即可利用这些优势 FDP Multi-Namespace Experiment-11.png
FADU 的FDP 技术与其他存储厂商的ZNS有什么差异?
FADU 的 FDP(灵活数据放置)技术与其他存储厂商的 ZNS(零管理命名空间)技术之间有一些显著的差异。我们可以从以下几个方面进行对比:
FDP 的应用场景 :FADU 的 FDP 允许在不要求应用程序具备特定支持的情况下,自动优化存储性能。这意味着,即使应用程序没有为 FDP 做任何特别的设计,它仍然能够从存储硬件的优化中获益。FDP 在不改变应用程序架构的前提下,通过更灵活的数据分配策略提升写入放大、带宽和耐久性。ZNS(零管理命名空间) ,由一些存储厂商(如 Kioxia 和 Western Digital)推出,要求应用程序或系统与设备进行更密切的交互和配合,以便充分利用该技术。ZNS 技术通过让应用程序管理命名空间的方式,优化垃圾回收和写入放大,从而提升性能和耐久性。但这通常意味着应用程序需要了解 ZNS 的工作原理,并进行相应的适配和优化。灵活性和易用性 :FDP 是一种较为自动化的技术,不需要应用程序或系统进行额外配置。这种"即插即用"的特性使得 FDP 能够在传统应用程序中无缝工作,减少了技术实现的复杂度。ZNS 由于要求应用程序对存储的管理和数据写入过程有更高的控制权,通常需要在系统中进行额外的调整。应用程序需要专门为 ZNS 进行优化,以便使得数据的分配和垃圾回收更加高效,这也增加了开发和运维的复杂度。性能提升方式 :FDP 通过动态分配和管理存储资源(如命名空间)来减少写放大和提高存储性能,它无需应用程序配合即可自动在存储设备上实现优化。FDP 通过优化内部存储策略来提升背景读取、写入带宽和耐久性。ZNS 依赖应用程序通过控制写入位置来优化性能,特别是在减少垃圾回收的压力和提高存储寿命方面。这种方法可以有效减少写入放大,但需要应用程序的支持。适应性 :FDP 更侧重于对现有系统的适应,而不需要对应用程序或数据管理策略做出重大修改。这使得 FDP 更加灵活,适合多种不同的使用场景。ZNS 则更适用于那些能够利用其精细控制数据写入顺序和位置的应用程序,尤其是对于高性能、高吞吐量要求的场景。值得一提的是 WD(西部数据)曾在其技术材料中比较过FDP与ZNS数据放置方案的WAF效率,得出ZNS的写放大因子能控制在1左右,而FDP的写放大因子通常大于1,可参考比较阅读:
延伸思考
这次分享的内容就到这里了,或许以下几个问题,能够启发你更多的思考,欢迎留言,说说你的想法~
在实际应用中,FDP技术可能面临哪些挑战?如何克服这些挑战? 如何在现有系统中集成FDP技术以提升存储性能? FDP技术在不同规模的数据中心中是否具有普适性?其适用性如何评估? 原文标题:FDP Multi-Namespace Experiment
https://blogs.fadu.io/flexible-data-placement/ ↩