Skip to main content
QUICK REVIEW

[论文解读] Architecture-Aware, High Performance Transaction for Persistent Memory

Kai Wu, Jie Ren|arXiv (Cornell University)|Mar 14, 2019
Advanced Data Storage Technologies参考文献 47被引用 4
一句话总结

本文提出 Archapt,一种面向持久内存的架构感知事务系统,通过利用硬件缓存行为并合并低脏值缓存行,减少了缓存行刷新的开销。通过估算缓存驻留情况并采用基于校验和的一致性恢复机制,Archapt 相较于 PMDK 和 Mnemosyne 基线系统,将缓存刷新减少了 66%,平均提升吞吐量 19%。

ABSTRACT

Byte-addressable non-volatile main memory (NVM) demands transactional mechanisms to access and manipulate data on NVM atomically. Those transaction mechanisms often employ a logging mechanism (undo logging or redo logging). However, the logging mechanisms can bring large runtime overhead (8%-49% in our evaluation), and 41%-78% of the overhead attributes to the frequent cache-line flushing. Such large overhead significantly diminishes the performance benefits offered by NVM. In this paper, we introduce a new method to reduce the overhead of cache-line flushing for logging-based transactions. Different from the traditional method that works at the program level and leverages program semantics to reduce the logging overhead, we introduce architecture awareness. In particular, we do not flush certain cache blocks, as long as they are estimated to be eliminated out of the cache because of the hardware caching mechanism (e.g., the cache replacement algorithm). Furthermore, we coalesce those cache blocks with low dirtiness to improve the efficiency of cache-line flushing. We implement an architecture-aware, high performance transaction runtime system for persistent memory, Archapt. Our results show that comparing with an undo logging (PMDK) and a redo logging (Mnemosyne), Archapt reduces cache-line flushing by 66% and improves system throughput by 19% on average (42% at most). Our crash tests with four hardware caching policies show that Archapt provides a strong guarantee on crash consistency.

研究动机与目标

  • 解决基于日志的事务在持久内存中因频繁缓存行刷新而导致的高运行时开销问题。
  • 减少事务系统中显式缓存行刷新指令导致的性能下降。
  • 在最小化缓存行刷新的同时,通过架构感知优化维持强崩溃一致性。
  • 通过合并低脏值缓存块,提高缓存行刷新的效率。
  • 提供一种轻量级、纯软件机制,用于估算缓存驻留情况,无需硬件修改。

提出的方法

  • 使用硬件缓存替换策略(如 LRU)的软件近似方法,估算持久对象的脏缓存块是否仍驻留在缓存中。
  • 对于预计会被硬件缓存替换机制驱逐的块,跳过显式缓存行刷新。
  • 将低脏值(平均 49%)的缓存块进行合并,以减少完整行刷新次数,提升内存带宽效率。
  • 使用校验和机制在崩溃后检测并纠正不一致的持久对象,确保崩溃一致性。
  • 将优化集成到支持回滚和重做日志机制的事务运行时系统(Archapt)中。
  • 隐式利用现有硬件缓存机制,当驱逐即将发生时,避免使用显式刷新指令。

实验结果

研究问题

  • RQ1能否通过架构感知的缓存驻留估算,减少持久内存事务中显式缓存行刷新的次数?
  • RQ2合并低脏值缓存块在提升缓存行刷新效率方面的效果如何?
  • RQ3基于软件的硬件缓存行为近似能否在跳过刷新的同时维持崩溃一致性?
  • RQ4跳过缓存行刷新对系统吞吐量和延迟的性能影响如何?
  • RQ5在多种硬件缓存策略下,基于校验和的不一致检测与纠正机制的鲁棒性如何?

主要发现

  • 与基线的回滚(PMDK)和重做(Mnemosyne)日志机制相比,Archapt 平均将缓存行刷新减少了 66%。
  • 在 TPC-C、YCSB 和 OLTP-bench 工作负载下,系统吞吐量平均提升 19%(最高达 42%)。
  • 在四种硬件缓存策略下进行的 100 次崩溃测试中,校验和机制成功检测并纠正了所有不一致的持久对象。
  • 即使在数十亿次更新的情况下,每次 100 次崩溃测试中仅检测到数百个不一致的持久对象,表明其具有高度可靠性。
  • 回滚和重做日志的刷新缓存行平均脏值均为 49%,证实合并低脏值块能显著提升刷新效率。
  • 该方法在不放松写入顺序约束的前提下维持了强崩溃一致性,与先前为提升性能而放松持久性顺序约束的工作不同。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。