skip to main content
10.1145/1950365.1950379acmconferencesArticle/Chapter ViewAbstractPublication PagesasplosConference Proceedingsconference-collections
research-article

Mnemosyne: lightweight persistent memory

Published:05 March 2011Publication History

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.

References

  1. Sparse - a semantic parser for C. sparse.wiki.kernel.org.Google ScholarGoogle Scholar
  2. AMD, Inc. Software optimization guide for AMD64 processors. http://support.amd.com/us/Embedded_TechDocs/25112.PDF, 2005.Google ScholarGoogle Scholar
  3. 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 ScholarGoogle ScholarCross RefCross Ref
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarCross RefCross Ref
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. H.-J. Boehm and M. Weiser. Garbage collection in an uncooperative environment. Softw., Pract. Exper., 18(9):807--820, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. J. Bonwick, M. Ahrens, V. Henson, M. Maybee, and M. Shellenbaum. The zettabyte file system. Technical report, Sun Microsystems.Google ScholarGoogle Scholar
  9. Boost C++Libraries. Serialization overview. http://www.boost.org/doc/libs/1_42_0/libs/serialization/doc/index.htm%l, Nov. 2004.Google ScholarGoogle Scholar
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. T. D. Chandra, R. Griesemer, and J. Redstone. Paxos made live: an engineering perspective. In PODC 26, Aug. 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. A. Chang and M. F. Mergen. 801 storage: Architecture and programming. ACM Transactions on Computer Systems, 6(1), Feb. 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle Scholar
  15. Christopher Clark. C hash table. http://www.cl.cam.ac.uk/ cwc22/hashtable/hashtable.c.Google ScholarGoogle Scholar
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. G. Copeland, T. Keller, R. Krishnamurthy, and M. Smith. The case for safe RAM. In VLDB 15, Aug. 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. J. Corbet. Fsyncers and curveballs (the firefox 3 fsync() problem). http://lwn.net/Articles/283745/, May 2008.Google ScholarGoogle Scholar
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. E. Doller. Phase change memory and its impacts on memory hierarchy. http://www.pdl.cmu.edu/SDI/2009/slides/Numonyx.pdf, 2009.Google ScholarGoogle Scholar
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. P. Felber, C. Fetzer, and T. Riegel. Dynamic performance tuning of word-based software transactional memory. In PPoPP 13, Feb. 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. J. Gray. The transaction concept: Virtues and limitations. In VLDB 7, Sept. 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. T. Harris, S. Marlow, S. P. Jones, and M. Herlihy. Composable memory transactions. In PPoPP 10, June 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. M. Herlihy and J. E. B. Moss. Transactional memory: Architectural support for lock-free data structures. In ISCA 20, May 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. M. Hirabayashi. Tokyo cabinet: a modern implementation of DBM. http://1978th.net/tokyocabinet/, 2010.Google ScholarGoogle Scholar
  32. Y. Huai. Spin-transfer torque MRAM (STT-MRAM): Challenges and prospects. AAPPS Bulletin, 18(6):33--40, Dec. 2008.Google ScholarGoogle Scholar
  33. 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 ScholarGoogle Scholar
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  35. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  36. C. Lamb, G. Landis, J. Orenstein, and D. Weinreb. The ObjectStore database system. Commun. ACM, 34(10):50--63, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. L. Lamport. Proving the correctness of multiprocess programs. IEEE Transactions on Software Engineering, 3(2), Mar. 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. D. Lea. A memory allocator. http://gee.cs.oswego.edu/dl/html/malloc.html.Google ScholarGoogle Scholar
  39. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  40. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  41. D. E. Lowell and P. M. Chen. Free transactions with Rio Vista. In SOSP 16, Oct. 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  43. 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 ScholarGoogle Scholar
  44. Microsoft Corp. SQL server 2008 books online: Memory management architecture: Buffer management. http://msdn.microsoft.com/en-us/library/aa337525.aspx.Google ScholarGoogle Scholar
  45. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  46. 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 ScholarGoogle ScholarCross RefCross Ref
  47. 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 ScholarGoogle Scholar
  48. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  49. Numonyx. Omneo P8P PCM 128-Mbit Parallel PCM. www.numonyx.com/Documents/Datasheets/316144_P8P_DS.pdf, Aug. 2010.Google ScholarGoogle Scholar
  50. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  51. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  52. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  53. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  54. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  55. 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 ScholarGoogle Scholar
  56. M. Satyanarayanan, H. H. Mashburn, P. Kumar, D. C. Steere, and J. J. Kistler. Lightweight recoverable virtual memory. In SOSP 14, Dec. 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. R. Sears and E. Brewer. Stasis: flexible transactional storage. In OSDI 8, Dec. 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  59. Sleepycat Software. Sleepycat software: Berkeley DB database. http://www.sleepycat.com.Google ScholarGoogle Scholar
  60. F. G. Soltis. Inside the AS/400. Duke Press, second edition, 1997.Google ScholarGoogle Scholar
  61. D. B. Strukov, G. S. Snider, D. R. Stewart, and R. S. Williams. The missing memristor found. Nature, 453:80--83, 2008.Google ScholarGoogle ScholarCross RefCross Ref
  62. S. C. Tweedie. Journaling the Linux ext2fs File System. In The Fourth Annual Linux Expo, Durham, North Carolina, May 1998.Google ScholarGoogle Scholar
  63. 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 ScholarGoogle ScholarCross RefCross Ref
  64. S. J. White and D. J. DeWitt. Quickstore: A high performance mapped object store. VLDB Journal, 4(4):629--673, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. M. Wu and W. Zwaenepoel. eNVy: a non-volatile, main memory storage system. In ASPLOS 6, Oct. 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  67. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Mnemosyne: lightweight persistent memory

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in
            • Published in

              cover image ACM Conferences
              ASPLOS XVI: Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
              March 2011
              432 pages
              ISBN:9781450302661
              DOI:10.1145/1950365
              • cover image ACM SIGPLAN Notices
                ACM SIGPLAN Notices  Volume 46, Issue 3
                ASPLOS '11
                March 2011
                407 pages
                ISSN:0362-1340
                EISSN:1558-1160
                DOI:10.1145/1961296
                Issue’s Table of Contents
              • cover image ACM SIGARCH Computer Architecture News
                ACM SIGARCH Computer Architecture News  Volume 39, Issue 1
                ASPLOS '11
                March 2011
                407 pages
                ISSN:0163-5964
                DOI:10.1145/1961295
                Issue’s Table of Contents

              Copyright © 2011 ACM

              Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 5 March 2011

              Permissions

              Request permissions about this article.

              Request Permissions

              Check for updates

              Qualifiers

              • research-article

              Acceptance Rates

              Overall Acceptance Rate535of2,713submissions,20%

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader