NV-Heaps: making persistent objects fast and safe with next-generation, non-volatile memories

NV-Heaps: making persistent objects fast and safe with next-generation, non-volatile memories
复制标题

DOI:
10.1145/1950365.1950380
复制
发表时间:
2011-03
期刊:
--
影响因子:
--
通讯作者:
Joel Coburn;Adrian M. Caulfield;Ameen Akel;Laura M. Grupp;Rajesh K. Gupta;Ranjit Jhala;S. Swanson
Joel Coburn;Adrian M. Caulfield;Ameen Akel;Laura M. Grupp;Rajesh K. Gupta;Ranjit Jhala;S. Swanson
中科院分区:
其他
文献类型:
--
作者:
Joel Coburn;Adrian M. Caulfield;Ameen Akel;Laura M. Grupp;Rajesh K. Gupta;Ranjit Jhala;S. Swanson

文献摘要

被引文献

相似文献

持久的、用户定义的对象为处理非易失性程序状态提供了一个有吸引力的抽象。然而,持久存储的缓慢速度(即,磁盘)限制了它们的设计并限制了它们的性能。快速、字节可寻址的非易失性技术(如相变存储器)将消除这一限制,并允许程序员在几乎与DRAM一样快的非易失性存储中构建高性能、持久的数据结构。创建这些数据结构需要一个足够轻量级的系统,以暴露底层内存的性能,但也要通过避免常见的错误(如悬空指针、多个free()和锁定错误)来确保应用程序和系统故障时的安全性。此外,系统必须防止新类型的难以发现的指针安全错误,这些错误只出现在持久对象中。这些漏洞特别危险,因为它们造成的任何腐败都是永久性的。我们已经实现了一个轻量级的,高性能的持久化对象系统,称为NV-heaps,它提供了事务语义,同时防止这些错误,并提供了一个易于使用和推理的持久化模型。我们使用NV-heaps、BerkeleyDB和Stasis实现了搜索树、哈希表、稀疏图和数组。我们的研究结果表明,NV-heap性能随线程数而变化,使用NV-heap实现的数据结构通过避免操作系统和最小化其他软件开销,分别比BerkeleyDB和Stasis实现的性能高出32倍和244倍。我们还量化了执行NV堆提供的安全保证的成本,并测量NV堆原语操作的成本。
Persistent, user-defined objects present an attractive abstraction for working with non-volatile program state. However, the slow speed of persistent storage (i.e., disk) has restricted their design and limited their performance. Fast, byte-addressable, non-volatile technologies, such as phase change memory, will remove this constraint and allow programmers to build high-performance, persistent data structures in non-volatile storage that is almost as fast as DRAM. Creating these data structures requires a system that is lightweight enough to expose the performance of the underlying memories but also ensures safety in the presence of application and system failures by avoiding familiar bugs such as dangling pointers, multiple free()s, and locking errors. In addition, the system must prevent new types of hard-to-find pointer safety bugs that only arise with persistent objects. These bugs are especially dangerous since any corruption they cause will be permanent. We have implemented a lightweight, high-performance persistent object system called NV-heaps that provides transactional semantics while preventing these errors and providing a model for persistence that is easy to use and reason about. We implement search trees, hash tables, sparse graphs, and arrays using NV-heaps, BerkeleyDB, and Stasis. Our results show that NV-heap performance scales with thread count and that data structures implemented using NV-heaps out-perform BerkeleyDB and Stasis implementations by 32x and 244x, respectively, by avoiding the operating system and minimizing other software overheads. We also quantify the cost of enforcing the safety guarantees that NV-heaps provide and measure the costs of NV-heap primitive operations.