全文概览
本文介绍了在CacheLib中实现FDP(Fast Data Placement)集成的研究方法和结果。
随着云计算的发展,缓存技术已经成为提高系统性能的重要手段之一。然而,在传统的缓存系统中,数据放置的位置往往是由系统自动分配的,难以满足不同应用场景的需求。因此,作者提出了FDP集成方案,通过用户自定义数据放置策略,实现了对数据位置的精确控制。实验结果表明,该方案能够显著提升系统的性能,并且具有良好的可扩展性和灵活性。
FDP 与 CacheLib 背景
FDP(Flexible Data Placement)是一种存储优化技术,旨在提高数据存储的效率和性能,主要特点包括:
- 主机控制
FDP允许主机系统通过虚拟句柄或指针来指示数据的存储位置,增强了数据管理的灵活性。
- 设备适应性
存储设备根据主机提供的提示选择数据放置的超级块,而不是自行决定,这样可以更好地管理存储空间。
- 功能保持
引入FDP不影响基本的存储功能,如读取、写入和安全性,确保了系统的兼容性。
FDP技术在QLC 大容量 SSD 存储中的价值
1. 提高存储效率
FDP技术通过允许主机系统指导数据放置,优化了存储资源的使用,减少了数据访问延迟,提升了读写性能。
2. 降低写放大因子(WAF)
FDP技术通过分区化数据放置和动态负载均衡等策略,显著降低了写放大因子,减少了额外的写入操作,延长了存储媒体的使用寿命。
3. 提升性能和QoS
FDP技术不仅提高了写入吞吐量,还显著提升了性能和服务质量(QoS),特别是在高SSD利用率和复杂负载场景中表现尤为突出。
更多关于 FDP 技术最新报道,可参考:
CacheLib 是一种高性能、可扩展的缓存库(Library),它常用于优化存储系统,特别是在使用SSD存储的场景中。CacheLib通过缓存热点数据来减少存储的读取延迟,提高系统的响应速度和吞吐量,通常应用于大规模的数据中心、分布式系统或高频繁读写的场景中。
问题意识:WAF与过度配置
- SSD设备WAF是CacheLib部署中的一大挑战
- SSD WAF可以达到3.5或更高
- 影响设备的耐用性、延迟、功耗等
- 高达50%的主机过度配置(OP)来限制设备WAF
- 这导致了SSD容量利用的不高效
为什么WAF是CacheLib的挑战?
- 频繁写入:CacheLib为了提供快速的数据访问和缓存更新,通常需要频繁地进行写入操作。当数据在CacheLib中更新时(比如缓存的数据在内存中被替换或系统需要持久化某些数据时),它需要将更新后的数据写回到SSD。如果WAF过高,意味着每次写入操作都会在SSD上引发大量额外的写入,这会影响SSD的耐用性和整体性能。
- 性能影响:CacheLib的性能优化目标是通过高速缓存减少延迟,但高WAF值会导致SSD在高频写入情况下出现性能瓶颈。SSD需要处理大量的无效或重复写入,这会增加延迟,降低缓存库的效能。
- 耐用性和功耗问题:SSD的耐用性会随着WAF的增加而下降,因为频繁的写入会导致闪存单元的磨损。此外,高WAF还会增加SSD的功耗,从而影响系统的能源效率。
因此,在CacheLib部署中,如何管理和优化WAF,减少不必要的写入操作,成为了一个重要的挑战,直接关系到系统的性能、存储成本和设备寿命。
根因分析:混合IO流导致的GC效率低
- 两个 I/O 引擎产生不同的 I/O 模式
- BlockCache(大对象) 产生相对冷的数据模式
- 顺序且不频繁的 16 MB 大小更新
- 对 SSD 友好,低 WAF 模式
- BigHash(小对象) 产生热数据模式
- 随机且频繁的 4KB 大小更新
- 对 SSD 不友好,高 WAF 模式
- 在 NAND 块中混合 I/O 模式
图示说明:
- 左侧展示了 BlockCache(大对象)和 BigHash(小对象)在不同 LBA 空间的分布。
- 上方的图示展示了 CacheLib 运行的初始阶段,随着时间的推移,随着 I/O 模式混合,垃圾回收(GC)变得更加困难,最终导致设备的 WAF 值变高。
在CacheLib 中使用 FDP的优势
- FDP有助于在 NAND 层分离两种数据 I/O 模式
- 避免BlockCache 和 BigHash 数据混合引起的 WAF
没有FDP
- 左侧展示了没有FDP时,BlockCache(大对象)和 BigHash(小对象)共享相同的 LBA 空间。随着时间的推移,由于这些数据混合,垃圾回收(GC)变得更加低效,导致设备的 WAF 较高。
有FDP
- 右侧展示了使用FDP后,BlockCache 和 BigHash 数据被分开管理,分别分配到不同的 LBA 空间。这种分离减少了数据混合,避免了垃圾回收(GC)效率低下,从而保持了更低的 WAF。
图示说明:
- 在没有FDP的情况下,BlockCache 和 BigHash 数据互相交织,随着时间的推移,垃圾回收(GC)变得低效,最终影响到设备的 WAF。
- 使用FDP后,这两种数据流被分隔开,减少了对垃圾回收的负面影响,保持了较低的 WAF。
图示说明:
- CacheLib结构图中展示了CacheLib如何在不同层次上管理FDP。在上方,DRAM缓存和SSD缓存分别对应BlockCache(大对象缓存)和BigHash(小对象缓存)。下方是设备层,其中包括FDP RUH分配器和FDP感知的I/O管理。
- SSD LBA空间图示中还展示了不同LBA空间的分配,BlockCache和BigHash的数据流被分别分配到各自的LBA空间中。
图展示了FDP如何在CacheLib中集成并提供优化。FDP支持I/O管理,将BlockCache(大对象缓存)和BigHash(小对象缓存)分配到不同的FDP RUHs,通过Passthrough接口与Linux内核交互。
后续提供评估参数,基于以下配置:
- 使用Samsung PM9D3进行评估
- 支持最多8个FDP RUHs
- 使用Dell PowerEdge R750服务器
非饱和测试案例(50% 利用率)
默认KVCache工作负载
- FDP 将设备 WAF 从 1.3 降至约 1(过度配置下 WAF 性能较好),在默认配置下实现
- CacheLib 的性能指标,如吞吐量、命中率、应用 WAF,不受影响
- FDP 改善了写入延迟
备注:默认配置只使用 SSD 的 50%(50% 主机过度配置用于控制 WAF)
图表说明:
- FDP与非FDP设备WAF对比(左下):图表展示了在KVCache默认配置下,使用FDP时设备WAF的变化。FDP将WAF降至接近1,而非FDP情况下,WAF较高。
- CacheLib性能指标(右侧):
- FDP-GET vs 非FDP-GET左上方的图显示了FDP和非FDP配置下的读取吞吐量(GET)对比,两者性能相当。
- FDP-SET vs 非FDP-SET中上方的图显示了FDP和非FDP配置下的写入吞吐量(SET)对比,两者相当。
- FDP P999 写入延迟 vs 非FDP P999 写入延迟右下方的图展示了FDP和非FDP配置下的写入延迟,FDP配置下的写入延迟较低(15%性能提升)。
饱和测试(100% 利用率)
- 同一个KVCache实例使用100%的SSD
- FDP 将设备WAF从3.5降至约1(左下),无过度配置优化下,SSD的 WAF明显增大,对SSD使用寿命有显著影响。
- CacheLib 的性能指标
- 读带宽 提升 2% 左右;
- 写带宽 提升 3-4%,FDP技术对CacheLib的吞吐能力影响不明显;
- FDP 能明显降低写入时延(200 us),未使用时延时达到1200us。
Note
FDP 技术在写入时延和WAF方面的优化,对于大容量SSD来说非常关键,吞吐能力影响有限。关于OP配置和SSD利用率需要澄清:
- 主机过度配置(OP) 通常通过SSD厂商提供的管理工具或固件设置来配置,目的是控制SSD的实际使用容量,从而减少WAF(写放大因子)并延长SSD的寿命。通过这种方式,用户可以根据需要选择不同的OP比例,以优化性能和寿命。
- 利用率,通过OP 配置,可调控SSD对外暴露的可用空间(写入),避免大空间+随机读写造成的过高WAF和访问时延。
多个 CacheLib 来扩展SSD利用率 (构想)
扩展到更多租户
- 目标:分析在增加工作负载和变化的I/O模式下FDP的表现
- 随着更多租户的增加,工作负载吞吐量会增加吗?
- 例如:N个租户的吞吐量 = 单个租户吞吐量 × N
- SSD的总使用率保持在100%
图示说明:
- 初始配置左侧显示了单个CacheLib工作负载配置,该配置使用了50%的SSD存储容量。
- 扩展到多个工作负载右侧展示了当增加多个工作负载(例如,CacheLib工作负载1和CacheLib工作负载2)时,SSD的存储容量被平分,两个工作负载分别使用各自的50%存储容量。总的SSD利用率仍然保持在100%。
Note
带宽上限是由PCIe 物理接口决定。
PCIe 4.0 64 GB/s(x16 通道)
PCIe 5.0 128 GB/s(x16 通道)
参考阅读:关于PCIe,你不知道的是
双租户测试数据 (都是 KVCache应用)
- 两个KVCache实例,每个使用50%的SSD(工作负载加倍)
- FDP将设备WAF从3.5降至约1
- CacheLib 的性能指标,如吞吐量、命中率、应用WAF等不受影响
- FDP 在读取和写入延迟方面提供租户隔离
图示说明:
- FDP与非FDP设备WAF对比图表展示了在多租户情况下(每个租户使用50%的SSD存储),FDP和非FDP情况下设备的WAF变化。在启用FDP时,设备的WAF明显下降至1,而非FDP时WAF保持较高水平。
- 性能指标对比
- 写入吞吐量(SET/s)两个租户的写入吞吐量几乎相同,FDP和非FDP情况下分别为49.3K和48K,表明FDP不会影响整体吞吐量。
- 读取吞吐量(GET/s)两个租户的读取吞吐量也相似,启用FDP后的吞吐量略有提升。
- P999写入延迟启用FDP时,P999写入延迟显著降低,从非FDP的606微秒减少到146微秒。
- P999读取延迟启用FDP时,P999读取延迟也显著减少,从非FDP的1422微秒降低至453微秒。
Note
FDP 技术加持下的多租户应用,降低单盘WAF同时,改善写入/读取时延,对读写的总带宽没有明显影响。
- 留意到,因为是并行KVCache 应用,故双租户下的写时延相对于单租户下降了近50%。
双租户测试数据(KVCache +Twitter)
- KVCache实例使用50%的SSD,Twitter工作负载使用剩余的50%
- 两个工作负载在FDP模式下像单租户一样都实现了接近1的WAF
- FDP将设备WAF从3.5降至约1
- CacheLib的性能指标,如吞吐量、命中率、应用WAF等不受影响
- FDP在多样化工作负载间提供租户隔离
性能指标对比,主要关注读写时延:
- P999写入延迟启用FDP后,KVCache的P999写入延迟显著减少,从非FDP的1294微秒降至140微秒,Twitter的延迟从1464微秒降至92微秒。
- P999读取延迟启用FDP后,KVCache的P999读取延迟减少,从非FDP的542微秒降至367微秒,Twitter的延迟从653微秒降至397微秒。
总结
- 在生产工作负载中实现了接近1的设备WAF
- 实现了高效的容量利用和更好的SSD延迟
- CacheLib的设计和应用WAF保持不变
- CacheLib的关键性能指标(如性能或命中率)保持不变
- 在扩展到更多租户时,WAF的行为保持一致
- FDP提供了高效的NAND媒体级别隔离,确保租户隔离