核心观点与关键数据
- 背景与动机:当前存储硬件和软件面临的主要I/O开销包括数据复制、系统调用和PCI通信成本。软件趋势倾向于通过绕过操作系统来减少软件开销(“边界穿越”),而硬件趋势则是增加存储中的计算能力。然而,缺乏对利用存储内计算进行I/O和数据处理操作以及减少I/O开销的内在支持。
- 存储发展趋势:存储设备性能不断提升,延迟显著降低,带宽持续增加。例如,从2008年到2022年,存储设备延迟从约70秒降至约20秒,带宽从250 MB/s增至6600 MB/s。
- 主要I/O开销分析:常见的I/O操作序列如“写入、读取”、“追加-校验和-写入”和“读取-修改-写入”中,减少数据复制、PCI成本和系统调用对于降低I/O开销至关重要。
- 现有文件系统方法比较:现有文件系统方法如KernelFS、UserFS和DeviceFS在计算卸载、直接访问、减少数据复制、降低PCI成本、存储管理、存储中处理、耐久性、数据与计算资源管理、安全性和满意度等方面各有优劣。
解决方案:FusionFS
- 设计理念:FusionFS通过CFS管理和提供存储资源的公平性,利用存储计算实现细粒度的崩溃一致性和更快的恢复,并通过卸载CISC到存储Ops来降低I/O开销。
- CISC vs RISC:FusionFS借鉴CISC的风格,将I/O和数据处理序列聚合到CISC Ops中,以减少I/O开销。与RISC操作相比,CISC Ops可以显著降低主要的I/O开销。
- FusionFS组件:包括应用程序、UserLib、主机CPU、内核、I/O队列、StorageFS、IO队列调度程序、细粒度日志记录设备CPU、数据处理FS、固件FS等。
- I/O处理示例:FusionFS将POSIX I/O操作转换为CISC IO操作,并通过StorageFS进行处理,包括检查权限、将I/O命令插入到inode队列、处理命令等。
- CISCops挑战与解决方案:CISCops面临透明生成和卸载、崩溃一致性、跨租户公平和高效等挑战。FusionFS通过部分支持自动卸载、MicroTx和CFS I/O调度程序来解决这些问题。
- 存储资源调度:FusionFS使用全局RB树来存储inode队列的排序virtime,以最少的CPU使用率对inode队列进行优先级排序,从而提高跨租户的公平性。
- CFS资源调度:FusionFS通过考虑每个inode队列的内存使用(memuse)来增强CFS调度程序,高效管理设备RAM,避免内存争用和饥饿。
- 崩溃一致性:FusionFS采用MicroTx来实现崩溃一致性,支持部分承诺,每个操作(微型操作)可以独立承诺,并在崩溃后自动恢复。
实验设置与评价
- 实验设置:使用双插槽64核Xeon可扩展CPU和512GB Intel Optane DC NVM进行实验,并使用仿真存储FS来模拟处理I/O请求。
- 评价目标:研究MicroTx的耐用性和自动恢复优势,讨论实际应用的整体影响,评估CFS调度程序对租户间资源公平性的有效性,了解FusionFS和CISC的有效性减少I/O开销。
- 微基准测试:FusionFS在“追加-校验和-写入”和“读取-修改-写入”等微基准测试中,分别比ext4-DAX、NOVA、SplitFS和CrossFS实现了高达4.5倍和3.3倍的吞吐量提升。
- 宏观基准测试:在Filebench宏观基准测试中,FusionFS在Varmail、Web服务器和文件服务器等工作负载中,分别比ext4-DAX、NOVA和CrossFS实现了高达4.6倍、4.6倍和4.6倍的加速。
- 应用程序测试:FusionFS在LevelDB应用程序中,通过替换校验和逻辑,实现了高达2.4倍的吞吐量提升。
研究结论
- FusionFS优势:FusionFS通过使用CISCops,显著降低了I/O开销,实现了更高的吞吐量和性能。CFS I/O调度程序保证了跨多个租户的公平性,MicroTx支持了崩溃一致性和快速恢复。
- 未来方向:利用存储资源来减少I/O延迟至关重要,更丰富的I/O抽象需要支持数据处理。
- 开源代码:源代码可在 https://github.com/RutgersCSSystems/FusionFS 上获得。