arXiv Paper CXL论文阅读笔记整理
问题
虽然Compute Express Link(CXL)支持多个节点之间的缓存一致性共享内存,但也引入了新的故障类型:
-
CXL系统的数据故障。当CXL内存对其他计算节点不可用时,就会发生数据故障。导致当前运行的应用程序无法访问数据。
-
CXL系统的进程故障。当访问CXL内存的进程发生故障,但数据仍然可以访问时,就会发生进程故障。如果进程在对CXL附加共享内存进行更新的过程中失败,可能会导致数据不一致。
基于CXL的共享内存缺乏故障模型,这使得解决这些故障变得具有挑战性。
本文工作
本文提出了一个对基于CXL的共享内存故障(数据和进程故障)进行分类和处理的模型。
-
数据故障,采用复制或纠删码。
-
复制:采用基于CXL交换机的复制机制,用交换机在不同故障域中分发并复制数据,减轻CPU的负担。
-
纠删码:使用分组策略将不同数据对象分组处理。
-
-
进程故障,采用日志记录或检查点。
-
日志记录:撤销日志(Undo Log),适合读密集型应用,在每次数据更新前记录旧数据。重做日志(Redo Log),适合写密集型应用,先将更新写入日志,再更新实际数据。恢复日志(Resumption Log),适合有数据依赖的事务,记录特定操作。
-
检查点机制:对于难以进行日志分析和修改的程序,使用检查点机制,通过减少日志记录频率来平衡性能开销。建议使用全流程持久化(Whole Process Persistence)方法,对缓存和寄存器状态进行持久化,以在崩溃后快速恢复。
-
-
故障联合处理。
-
分层处理:即将复制/纠删码与日志/原子指针相结合。
-
协同处理:复制重做日志,按阶段复制,检查点加日志。
-
总结
针对CXL共享内存引入的数据故障和进程故障,本文提出处理模型。(1)数据故障,使用复制(交换机复制减少CPU开销)或纠删码(数据分组处理)。(2)进程故障,使用日志记录(读密集采用撤销日志,写密集采用重做日志,数据依赖采用恢复日志)和检查点(全流程持久化,记录缓存和寄存器状态)。(3)故障联合处理,将日志/纠删码与日志相结合,检查点与日志相结合。