Abstract
New storage-class memory (SCM) technologies, such as phase-change memory, STT-RAM, and memristors, promise user-level access to non-volatile storage through regular memory instructions. These memory devices enable fast user-mode access to persistence, allowing regular in-memory data structures to survive system crashes.
In this paper, we present Mnemosyne, a simple interface for programming with persistent memory. Mnemosyne addresses two challenges: how to create and manage such memory, and how to ensure consistency in the presence of failures. Without additional mechanisms, a system failure may leave data structures in SCM in an invalid state, crashing the program the next time it starts.
In Mnemosyne, programmers declare global persistent data with the keyword "pstatic" or allocate it dynamically. Mnemosyne provides primitives for directly modifying persistent variables and supports consistent updates through a lightweight transaction mechanism. Compared to past work on disk-based persistent memory, Mnemosyne reduces latency to storage by writing data directly to memory at the granularity of an update rather than writing memory pages back to disk through the file system. In tests emulating the performance characteristics of forthcoming SCMs, we show that Mnemosyne can persist data as fast as 3 microseconds. Furthermore, it provides a 35 percent performance increase when applied in the OpenLDAP directory server. In microbenchmark studies we find that Mnemosyne can be up to 1400% faster than alternative persistence strategies, such as Berkeley DB or Boost serialization, that are designed for disks.
- Sparse - a semantic parser for C. sparse.wiki.kernel.org.Google Scholar
- AMD, Inc. Software optimization guide for AMD64 processors. http://support.amd.com/us/Embedded_TechDocs/25112.PDF, 2005.Google Scholar
- M. P. Atkinson, P. J. Bailey, K. J. Chisholm, P. W. Cockshott, and R. Morrison. An approach to persistent programming. Computer Journal, 26(4):360--365, Nov 1983.Google Scholar
Cross Ref
- M. P. Atkinson, L. Daynès, M. J. Jordan, T. Printezis, and S. Spence. An orthogonally persistent java. SIGMOD Rec., 25(4):68--75, 1996. Google Scholar
Digital Library
- F. Bedeschi, C. Resta, O. Khouri, E. Buda, L. Costa, M. Ferraro, F. Pellizzer, F. Ottogalli, A. Pirovano, M. Tosi, R. Bez, R. Gastaldi, and G. Casagrande. An 8Mb demonstrator for high-density 1.8V phase-change memories. In VLSI Circuits, pages 442--445, June 2004.Google Scholar
Cross Ref
- E. D. Berger, K. S. McKinley, R. D. Blumofe, and P. R. Wilson. Hoard: a scalable memory allocator for multithreaded applications. In ASPLOS 9, Nov. 2000. Google Scholar
Digital Library
- H.-J. Boehm and M. Weiser. Garbage collection in an uncooperative environment. Softw., Pract. Exper., 18(9):807--820, 1988. Google Scholar
Digital Library
- J. Bonwick, M. Ahrens, V. Henson, M. Maybee, and M. Shellenbaum. The zettabyte file system. Technical report, Sun Microsystems.Google Scholar
- Boost C++Libraries. Serialization overview. http://www.boost.org/doc/libs/1_42_0/libs/serialization/doc/index.htm%l, Nov. 2004.Google Scholar
- T. C. Bressoud, T. Clark, and T. Kan. The design and use of peristent memory on the DNCP hardware fault-tolerant platform. In DSN, 2001. Google Scholar
Digital Library
- M. J. Carey, D. J. DeWitt, M. J. Franklin, N. E. Hall, M. L. McAuliffe, J. F. Naughton, D. T. Schuh, M. H. Solomon, C. K. Tan, O. G. Tsatalos, S. J. White, and M. J. Zwilling. Shoring up persistent applications. SIGMOD Rec., 23(2):383--394, 1994. Google Scholar
Digital Library
- T. D. Chandra, R. Griesemer, and J. Redstone. Paxos made live: an engineering perspective. In PODC 26, Aug. 2007. Google Scholar
Digital Library
- A. Chang and M. F. Mergen. 801 storage: Architecture and programming. ACM Transactions on Computer Systems, 6(1), Feb. 1988. Google Scholar
Digital Library
- J. H. Choi, H. Franke, and K. Zeilenga. Enhancing the performance of OpenLDAP directory server with multiple caching. In International Symposium on Performance Evaluation of Computers and Telecommunications Systems (SPECTS), July 2003.Google Scholar
- Christopher Clark. C hash table. http://www.cl.cam.ac.uk/ cwc22/hashtable/hashtable.c.Google Scholar
- J. Coburn, A. M. Caulfield, A. Akel, L. M. Grupp, R. K. Gupta, R. Jhala, and S. Swanson. NV-Heaps: Making persistent objects fast and safe with next-generation, non-volatile memories. In ASPLOS 16, Mar. 2011. Google Scholar
Digital Library
- J. Condit, E. B. Nightingale, C. Frost, E. Ipek, B. Lee, D. Burger, and D. Coetzee. Better I/O through byte-addressable, persistent memory. In SOSP 22, pages 133--146, Oct. 2009. Google Scholar
Digital Library
- G. Copeland, T. Keller, R. Krishnamurthy, and M. Smith. The case for safe RAM. In VLDB 15, Aug. 1989. Google Scholar
Digital Library
- J. Corbet. Fsyncers and curveballs (the firefox 3 fsync() problem). http://lwn.net/Articles/283745/, May 2008.Google Scholar
- D. J. DeWitt, R. H. Katz, F. Olken, L. D. Shapiro, M. R. Stonebraker, and D. Wood. Implementation techniques for main memory database systems. SIGMOD Rec., 14(2):1--8, 1984. Google Scholar
Digital Library
- E. Doller. Phase change memory and its impacts on memory hierarchy. http://www.pdl.cmu.edu/SDI/2009/slides/Numonyx.pdf, 2009.Google Scholar
- N. Edel, D. Tuteja, E. L. Miller, and S. A. Brandt. MRAMFS: A compressing file system for non-volatile RAM. In Proceedings of thje IEEE/ACM International Symposium on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems (MASCOTS), pages 596--603, Oct. 2004. Google Scholar
Digital Library
- F. Eskesen, M. Hack, A. Iyengar, R. P. King, and N. Halim. Software exploitation of a fault-tolerant computer with a large memory. In FTCS, 1998. Google Scholar
Digital Library
- P. Felber, C. Fetzer, and T. Riegel. Dynamic performance tuning of word-based software transactional memory. In PPoPP 13, Feb. 2008. Google Scholar
Digital Library
- R. F. Freitas and W. W. Wilcke. Storage-class memory: the next storage system technology. IBM J. Res. Dev., 52(4):439--447, 2008. Google Scholar
Digital Library
- H. Garcia-Molina and K. Salem. Main memory database systems: An overview. IEEE Trans. on Knowl. and Data Eng., 4(6):509--516, 1992. Google Scholar
Digital Library
- J. Gray. The transaction concept: Virtues and limitations. In VLDB 7, Sept. 1981. Google Scholar
Digital Library
- J. Gray, P. Mcjones, M. Blasgen, B. Lindsay, R. Lorie, and T. Price. The recovery manager of the System R database manager. ACM Computing Surveys, 13:223--242, 1981. Google Scholar
Digital Library
- T. Harris, S. Marlow, S. P. Jones, and M. Herlihy. Composable memory transactions. In PPoPP 10, June 2005. Google Scholar
Digital Library
- M. Herlihy and J. E. B. Moss. Transactional memory: Architectural support for lock-free data structures. In ISCA 20, May 1993. Google Scholar
Digital Library
- M. Hirabayashi. Tokyo cabinet: a modern implementation of DBM. http://1978th.net/tokyocabinet/, 2010.Google Scholar
- Y. Huai. Spin-transfer torque MRAM (STT-MRAM): Challenges and prospects. AAPPS Bulletin, 18(6):33--40, Dec. 2008.Google Scholar
- Intel Corp. Intel 64 and ia-32 architectures software developer's manual volume 1: Basic architecture. http://www.intel.com/assets/pdf/manual/253665.pdf, Mar. 2010.Google Scholar
- E. Ipek, J. Condit, E. B. Nightingale, D. Burger, and T. Moscibroda. Dynamically replicated memory: building reliable systems from nanoscale resistive memories. In ASPLOS 15, Mar. 2010. Google Scholar
Digital Library
- J. Jung, Y. Won, E. ki Kim, H. Shin, and B. Jeon. Frash: Exploiting storage class memory in hybrid file system for hierarchical storage. ACM Transactions on Storage, 6(1), 2010. Google Scholar
Digital Library
- C. Lamb, G. Landis, J. Orenstein, and D. Weinreb. The ObjectStore database system. Commun. ACM, 34(10):50--63, 1991. Google Scholar
Digital Library
- L. Lamport. Proving the correctness of multiprocess programs. IEEE Transactions on Software Engineering, 3(2), Mar. 1977. Google Scholar
Digital Library
- D. Lea. A memory allocator. http://gee.cs.oswego.edu/dl/html/malloc.html.Google Scholar
- B. C. Lee, E. Ipek, O. Mutlu, and D. Burger. Architecting phase change memory as a scalable DRAM alternative. In ISCA 36, June 2007. Google Scholar
Digital Library
- B. Liskov, A. Adya, M. Castro, M. Day, S. Ghemawat, R. Gruber, U. Maheshwari, A. C. Myers, and L. Shrira. Safe and efficient sharing of persistent objects in Thor. In SIGMOD Conference, pages 318--329, 1996. Google Scholar
Digital Library
- D. E. Lowell and P. M. Chen. Free transactions with Rio Vista. In SOSP 16, Oct. 1997. Google Scholar
Digital Library
- M. K. McKusick and G. R. Ganger. Soft updates: A technique for eliminating most synchronous writes in the fast filesystem. In Proceedings of FREENIX, June 1999. Google Scholar
Digital Library
- M. K. McKusick, W. N. Joy, S. J. Leffler, and R. S. Fabry. Fsck - the unix file system check program. Unix System Manager's Manual - 4.3 BSD Virtual VAX-11 Version, Apr. 1986.Google Scholar
- Microsoft Corp. SQL server 2008 books online: Memory management architecture: Buffer management. http://msdn.microsoft.com/en-us/library/aa337525.aspx.Google Scholar
- C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh, and P. Schwarz. ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging. ACM Trans. Database Syst., 17(1):94--162, 1992. Google Scholar
Digital Library
- K. E. Moore, J. Bobba, M. J. Moravan, M. D. Hill, and D. A. Wood. Logtm: Log-based transactional memory. In HPCA 12, pages 258--269, Feb. 2006.Google Scholar
Cross Ref
- MySQL Performance Blog. Tokyo tyrant -- the extras part i : Is it durable? http://www.mysqlperformanceblog.com/2009/11/10/tokyo-tyrant-the-extras-%part-i-is-it-durable/, Nov. 2009.Google Scholar
- Y. Ni, A. Welc, A.-R. Adl-Tabatabai, M. Bach, S. Berkowits, J. Cownie, R. Geva, S. Kozhukow, R. Narayanaswamy, J. Olivier, S. Preis, B. Saha, A. Tal, and X. Tian. Design and implementation of transactional constructs for C/C++. In OOPSLA 23, Oct. 2008. Google Scholar
Digital Library
- Numonyx. Omneo P8P PCM 128-Mbit Parallel PCM. www.numonyx.com/Documents/Datasheets/316144_P8P_DS.pdf, Aug. 2010.Google Scholar
- X. Ouyang, D. Nellans, R. Wipfel, D. Flynn, and D. K. Panda. Beyond block I/O: Rethinking traditional storage primitives. In HPCA 17, Feb. 2011. Google Scholar
Digital Library
- V. Prabhakaran, L. N. Bairavasundaram, N. Agrawal, H. S. Gunawi, A. C. Arpaci-Dusseau, and R. H. Arpaci-Dusseau. IRON File Systems. In SOSP 20, pages 206--220, Brighton, United Kingdom, Oct. 2005. Google Scholar
Digital Library
- M. K. Qureshi, J. Karidis, M. Franceschini, V. Srinivasan, L. Lastras, and B. Abali. Enhancing lifetime and security of PCM-based main memory with start-gap wear leveling. In MICRO 42, Dec. 2009. Google Scholar
Digital Library
- M. K. Qureshi, V. Srinivasan, and J. A. Rivers. Scalable high performance main memory system using phase-change memory technology. In ISCA 36, June 2007. Google Scholar
Digital Library
- M. Rosenblum and J. K. Ousterhout. The design and implementation of a log-structured file system. ACM Trans. Comput. Syst., 10(1):26--52, Feb. 1992. Google Scholar
Digital Library
- Samsung. Samsung ships industry's first multi-chip package with a pram chip for handsets. http://www.samsung.com/us/business/semiconductor/newsView.do?news_id=1%149, Apr. 2010.Google Scholar
- M. Satyanarayanan, H. H. Mashburn, P. Kumar, D. C. Steere, and J. J. Kistler. Lightweight recoverable virtual memory. In SOSP 14, Dec. 1993. Google Scholar
Digital Library
- R. Sears and E. Brewer. Stasis: flexible transactional storage. In OSDI 8, Dec. 2008. Google Scholar
Digital Library
- V. Singhal, S. V. Kakkad, and P. R. Wilson. Texas: good, fast, cheap persistence for c++. SIGPLAN OOPS Mess., 4(2):145--147, 1993. Google Scholar
Digital Library
- Sleepycat Software. Sleepycat software: Berkeley DB database. http://www.sleepycat.com.Google Scholar
- F. G. Soltis. Inside the AS/400. Duke Press, second edition, 1997.Google Scholar
- D. B. Strukov, G. S. Snider, D. R. Stewart, and R. S. Williams. The missing memristor found. Nature, 453:80--83, 2008.Google Scholar
Cross Ref
- S. C. Tweedie. Journaling the Linux ext2fs File System. In The Fourth Annual Linux Expo, Durham, North Carolina, May 1998.Google Scholar
- C. Villa, D. Mills, G. Barkley, H. Giduturi, S. Schippers, and D. Vimercati. A 45nm 1Gb 1.8V phase-change memory. In ISSCC 2010, pages 270--271, Feb. 2010.Google Scholar
Cross Ref
- S. J. White and D. J. DeWitt. Quickstore: A high performance mapped object store. VLDB Journal, 4(4):629--673, 1995. Google Scholar
Digital Library
- M. Wu and W. Zwaenepoel. eNVy: a non-volatile, main memory storage system. In ASPLOS 6, Oct. 1994. Google Scholar
Digital Library
- P. Wu, M. M. Michael, C. von Praun, T. Nakaike, R. Bordawekar, H. W. Cain, C. Cascaval, S. Chatterjee, S. Chiras, R. Hou, M. F. Mergen, X. Shen, M. F. Spear, H. Wang, and K. Wang. Compiler and runtime techniques for software transactional memory optimization. Concurrency and Computation: Practice and Experience, 21(1):7--23, 2009. Google Scholar
Digital Library
- P. Zhou, B. Zhao, J. Yang, and Y. Zhang. A durable and energy efficient main memory using phase change memory technology. In ISCA 36, June 2007. Google Scholar
Digital Library
Index Terms
Mnemosyne: lightweight persistent memory
Recommendations
Mnemosyne: lightweight persistent memory
ASPLOS XVI: Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systemsNew storage-class memory (SCM) technologies, such as phase-change memory, STT-RAM, and memristors, promise user-level access to non-volatile storage through regular memory instructions. These memory devices enable fast user-mode access to persistence, ...
Mnemosyne: lightweight persistent memory
ASPLOS '11New storage-class memory (SCM) technologies, such as phase-change memory, STT-RAM, and memristors, promise user-level access to non-volatile storage through regular memory instructions. These memory devices enable fast user-mode access to persistence, ...
NVM duet: unified working memory and persistent store architecture
ASPLOS '14: Proceedings of the 19th international conference on Architectural support for programming languages and operating systemsEmerging non-volatile memory (NVM) technologies have gained a lot of attention recently. The byte-addressability and high density of NVM enable computer architects to build large-scale main memory systems. NVM has also been shown to be a promising ...







Comments