导语:FDP 和 Latency Monitor 是高弹性 SSD 架构的新增要素。
在最近发表的两篇博客中,我侧重谈论了一些似乎不太相关的主题。近日与业内同行讨论后,我认为这些主题比我想象的更为重要。在本篇博客中,我将进一步探讨这种相关性,讨论延迟缓解问题,以及为何 NVMe 的灵活数据放置 (FDP) 和 OCP 存储工作组的 Latency Monitor (LM) 等策略将成为高弹性垂直集成系统的必备要素。
回顾 - 垂直集成的弹性系统
在此前的博客“通过左移方法大幅提升 SSD 弹性”中,我介绍了与打造高弹性系统有关的所有主机和存储设备要素。从 OCP SSD 规范的第一版到如今的第三版(版本 2.5),OCP 逐步在其规范中添加了一系列构建弹性存储系统所需的要素。在此前的文章中,我已讨论过恐慌检测、恐慌恢复和标准化遥测等功能。在本文中,我将深入探讨另外两项技术:灵活数据放置 (FDP) 和延迟监控 (Latency Monitor)
图 1 - 垂直集成弹性所需功能摘要
NVM Express™ 灵活数据放置 (FDP) 功能通过缓解尾部延迟来增强垂直集成弹性
通过 FDP 来增强 SSD 弹性是一种很容易理解的方案,因为降低写入放大效应,可延长主机应用所用存储设备的使用寿命。对此,业界已进行了广泛讨论,我同事也撰写过类似的美光博客。此类文章还展示了可使用 FDP 来提高性能的多个场景。这些都在我们的意料之中。与减少垃圾收集效果类似,业界观察到 FDP 可改善真实场景工作负载的性能。
除此之外,减少延迟异常值是否可视为垂直集成弹性的必备功能?FDP 对此有无助益? 在此前的另一篇博客“为什么主流数据中心 SSD 中的延迟问题很重要,以及美光如何成为同类产品中的佼佼者”中,我探讨了延迟异常值为横向扩展解决方案带来的巨大挑战,以及美光为打造业界前沿解决方案实施的技术。但那篇文章没有讨论垂直集成,也没有讨论垂直集成的 FDP 解决方案将如何进一步降低延迟。
如果 FDP 可减少垃圾收集 (GC) 的次数,很显然也会减少延迟异常值。当然,即使实现了零 GC 和“WAF=1”,由于不同的通道颗粒、读取平面、由主机发起的编程和擦除操作等因素,仍然会出现延迟异常值。而且,当写入放大系数约为 2-3 或更高时,发生碰撞的可能性将大幅增加,也会产生更大的延迟异常值。我们需要讨论的是,FDP 能在多大程度上缓解延迟异常值?
图 2:主机和内部操作对 NAND 操作产生影响的高层次摘要。这些内部操作会增加流量,通常以“写入放大”来描述
接下来,使用我在有关延迟的博客中详细讨论过的业内常用方法,看一看满负荷压力测试(70% 读取,30% 写入,4KiB 随机工作负载)下的延迟情况,并绘制读取延迟变化图。本测试以一种简单方式涵盖了非 FDP 的情况,并遵循行业惯例。为测量“WA=1”的理想 FDP 情况,我们创建了一个新命名空间,并且在运行 70/30 工作负载之前仅对总容量的一部分进行了预处理。在测试中,我们将 8TB 美光 7500 SSD 预处理为 1TB,并将 IO 限制为 1TB(以防止读取未映射的 LBA),然后开始测试,直至物理介质填满并触发 GC。
下方的图 3 显示了在没有写入压力和有持续写入压力两种情况下的读取延迟变化。许多先前的结果表明 FDP WA 约为 1,因此,我们可以预测尾部延迟减少高达 30%。
图 3:FDP 可缓解垃圾收集压力,因此可显著减少尾部延迟。
OCP 存储工作组的 Latency Monitor 可增强 SSD 弹性
我曾在有关延迟缓解的博客中说过,当数据库查询被拆分为多个并行运行的子查询时,尾部延迟对总延迟带来的改变量很小,但对应用的影响很大。该博客讨论了查找延迟异常值的原因以及修复问题所面临的巨大挑战,但没有涉及到如何证明延迟异常值符合预期。利用 FIO 之类的工具,可以在系统级别为每个事务添加时间戳,并计算所需的延迟,绘制统计图。但是,由于当前驱动器的性能高达数百万 IOPS,在实际应用当中,创建系统级实时块跟踪并查找异常值所需的计算成本非常高昂。即使成本可以承受,当主机检测到异常值,然后发送带有所需调试数据的遥测主机发起请求时,SSD 调试信息可能已不再存在。
在准备 FMS 2017 论文时,我便遇到了这个问题。事实上,SSD 控制器具有足够的计算能力来记录每条命令的到达和离开时间,然后测量延迟,生成详细的统计直方图,并在延迟值过高时触发断言。在这种情况下,数据是在内部收集的,可供随后提取和分析。统计图上呈现的数据全部由 SSD 自身在内部生成。
基于这项工作以及 Meta 的一些关键需求,SSD Latency Monitor 的概念得以正式确立,并首次包含在 OCP 数据中心 NVMe SSD 规范第 2 版中。简言之,每个已传出的命令都带有时间戳,可与该命令传入时的时间戳进行比较,计算延迟。可以使用时间戳创建四个主机可配置的直方图桶。为解决与主机请求调试日志相关的延迟问题,如果在命令传出时其延迟超过了阈值,将立即保存内部调试日志,用于供应商随后分析。随着 OCP Storage 标准化遥测功能的部署,我们有望进一步深入调试延迟异常值的信息。
在 2022 年度存储开发者大会,来自 Meta 的 Vineet Parekh 和 Venkat Ramesh 讨论了在其设备中部署延迟监控的情况,并介绍了他们发现的一个关键问题。他们指出,假设整套设备以 1000 IOPS 运行,如果每秒出现异常值的概率为 9 个 9 级别,那么每天将产生超过 5,000 次延迟事件!Parekh 和 Ramesh 展示了一个示例,他们在一块有问题的 SSD 驱动器上部署了 Latency Monitor,该方法可有效调试在部署 Latency Monitor 之前数月都未解决的延迟异常值问题。下图 4 总结了 Latency Monitor 架构,以及他们克服巨大困难,成功调试异常值所得出的结果。
Latency Monitor 的另一个用途是识别主机延迟问题,此前人们往往将这类问题归咎于存储设备。以下是两个近期的例子。一个例子与 Linux 操作系统的问题有关,由于延迟异常值的存在,导致了一项 NVMe 规范增强的扩展。另一个是我同事 Sayali Shirode 在一篇博客中讨论的例子。Sayali 使用了 Latency Monitor,证明测试中的延迟异常值并非由相关 SSD 导致。
图 4:Meta 在 2022 年度存储开发者大会上展示的延迟异常值调试示例
结论:美光正在采用高弹性 SSD 架构和设计
在 2023 年 11 月发表的博客中,我谈到了如何利用“左移”方法大幅提升存储弹性。整个生态系统需要依靠度量和侦测,还需要垂直集成,将主机和供应商的交互纳入其中。我提到了一些关键要素,如恐慌报告、恐慌恢复,以及大幅减少尾部延迟。在此我还想强调另外两个关键要素。
- OCP 规范中的 Latency Monitor 功能对于消除延迟异常值至关重要,不仅对于 SSD 设备如此,对于整个软件生态系统也是如此。
- 数据放置技术(特别是 FDP)有助于提高设备的耐用度和性能,并将延迟异常值减少高达 30%。
最后的两点补充
- 在即将召开的 FMS 峰会上,我将主持一场关于超大规模应用的会议,Meta 将在会议上详细介绍大规模部署 Latency Monitor 的经验。欢迎大家踊跃参加。期待大家能在今年秋季的会议上围绕 FDP 展开热烈讨论。
- OCP Storage 提供了 NVMe-CLI 插件,这是一款与供应商无关的工具,安装非常简单,可用于配置和报告 FDP、Latency Monitor 以及其他关键输入(例如解码标准化遥测)的信息。
致谢
- 我要感谢美光同事 Chandra Guda 为 FDP 实验设计所做的工作,以及 John Mazie 为测试执行所提供的支持。
进一步阅读
为什么主流数据中心 SSD 中的延迟问题很重要,以及美光如何成为同类产品中的佼佼者 | 美光科技
超大规模环境中观察到的闪存问题调试 - SNIA SDC 2022(sniadeveloper.org)
通过 I/O 确定性避免 SSD 中代价高昂的读取延迟变化 (flashmemorysummit.com)