论文部分内容阅读
新型非易失性存储介质,诸如闪存(flash)、相变内存(phase-change memory, PCM)、可变电阻式内存(ReRAM)等,可同时提供传统硬盘等外部存储器的数据持久化能力和接近动态随机访问内存(DRAM)等内部存储器的存取性能。非易失性内存介质及其软硬件系统共同构成持久性内存(persistent memory)系统,可以融合传统易失性内部存储和非易失性外部存储的优良特性,提升上层应用软件和系统整体的性能。持久性内存系统使得内存数据在系统发生故障时依然得以保留。该特性在减少传统持久化机制带来的性能损耗方面作用显著,但于此同时,也使得发生系统故障时的数据一致性(crash consistency)问题尤为突出。而为保证故障时的数据一致性,往往需要对上层应用程序访问内存的接口加以限制。因此,数据一致性机制及其应用程序接口方式在持久性内存系统性能、易用性及两者间的平衡等方面扮演着非常重要的角色。从应用层到系统层,再到硬件层,持久性内存提供接口的形式主要包括文件系统、事务性内存和硬件接口等。本论文研究了持久性内存系统在文件系统、事务性内存和软件透明三种主要数据存取接口方式下,如何设计和实现高效的故障时数据一致性保证机制的问题。主要创新点和研究成果包括:·文件系统接口下的多版本缓存事务技术。将原子性事务(atomic transaction)机制引入到操作系统页缓存中,解决由动态内存和非易失性内存构成的持久性内存系统的故障时数据一致性问题。将该技术应用于移动系统环境,在新的持久性内存系统假设下,改进现有手机文件系统设计,提出优化手机能耗和应用响应的新指标及相应的三组新算法。实际测试表明,该技术可使现有安卓平台上应用的响应时间和能耗分别下降51.6%和35.8%。·事务性内存接口下的小缓冲区组技术。根据NVM Express接口和固态硬盘的新特性,为事务性内存设计了一种高效的一致性持久化机制,为持久性内存提供了一种新的实现方式。该系统采用的快照隔离技术可以使实时分析等只读负载不受持久化开销的影响;小缓冲区组(small buffer array)的设计,在保证故障时数据一致性的同时,可显著降低组提交(group commit)中提交者相互等待的时间,兼得理想的吞吐量和延迟。实验测评中,该设计在读写混合的负载下,可比最优的传统实现的性能提高32.5%。·软件透明接口下的双模式检查点生成技术。提出支持对软件透明的故障时数据一致性的混合持久性内存设计方法,通过双模式检查点生成技术高效地生成一致的可恢复的检查点。该方法同时在缓存块粒度和操作系统页粒度上产生检查点,可使软件执行与产生检查点的延迟重合,实现的停滞时间比页粒度的检查点生成机制减少了86.2%;同时实现可行的存储空间占用,是块粒度检查点生成机制所需存储空间的26%。·软件透明的数据一致性协议及其形式化证明。双模式检查点生成技术,对数据一致性保证提出了新的挑战。多个数据版本的隔离和维护,在程序执行和生成检查点过程重合的情况下变得尤为复杂。为此提出并利用状态机模型表达了故障时数据一致性协议;对代码级实现进行了符号抽象,利用不变式和数学归纳法对故障时数据一致性协议的正确性进行了形式化证明。