nvramdisk: A Transactional Block Device Driver for Non-Volatile RAM

In this work, we developed nvramdisk, a transactional block device driver for byte-addressable NVRAM. nvramdisk effectively addresses the key technical challenges in using a section of NVRAM as a transactional persistent block device. nvramdisk adopts (i) shadow block, (ii) mapping table journaling, and (iii) type-dependent ordering guarantee to provide atomicity, consistency, integrity and durability in write operations on nvramdisk imposed block device. We fully implemented nvramdisk device driver on Linux OS and port it on the desktop computer as well as Android smartphones. In memcachedb, locating the database table in nvramdisk brings ×1.9 insertions/sec and updates/sec performance gain against locating the database table in a high-end SSD (FusionIO ioDrive2). SQLite performance increases by ×2.9, from 743 ins/sec to 2,184 ins/sec, in smartphone(Samsung Galaxy S4) and ×15, from 730 ins/sec to 12390 ins/sec in PC. nvramdisk yields 26 percent higher random write performance against Persistent Memory Block Driver. The overhead of supporting transaction accompanies 6 percent performance penalty in memcachedb operations.

[1]  Jongmoo Choi,et al.  Regularities considered harmful: forcing randomness to memory accesses to reduce row buffer conflicts for multi-core, multi-bank systems , 2013, ASPLOS '13.

[2]  Dhruva R. Chakrabarti,et al.  Implications of CPU Caching on Byte-addressable Non-Volatile Memory Programming , 2012 .

[3]  Craig A. N. Soules,et al.  Metadata Efficiency in Versioning File Systems , 2003, FAST.

[4]  Peter M. Chen,et al.  The Rio file cache: surviving operating system crashes , 1996, ASPLOS VII.

[5]  Michael M. Swift,et al.  Mnemosyne: lightweight persistent memory , 2011, ASPLOS XVI.

[6]  Jeffrey F. Naughton,et al.  Middle-tier database caching for e-business , 2002, SIGMOD '02.

[7]  Tatu Ylönen Shadow Paging Is Feasible , 1994 .

[8]  Margo I. Seltzer,et al.  Berkeley DB , 1999, USENIX Annual Technical Conference, FREENIX Track.

[9]  Keith Bostic,et al.  A Pageable Memory Based Filesystem , 1990, USENIX Summer.

[10]  Jun Yang,et al.  A durable and energy efficient main memory using phase change memory technology , 2009, ISCA '09.

[11]  Youjip Won,et al.  I/O Stack Optimization for Smartphones , 2013, USENIX ATC.

[12]  Christopher Frost,et al.  Better I/O through byte-addressable, persistent memory , 2009, SOSP '09.

[13]  Lu Wang,et al.  Smart caching for web browsers , 2010, WWW '10.

[14]  Young Ik Eom,et al.  Reducing excessive journaling overhead with small-sized NVRAM for mobile devices , 2014, IEEE Transactions on Consumer Electronics.

[15]  Meng Zhu,et al.  Journaling of journal is (almost) free , 2014, FAST.

[16]  Rajesh K. Gupta,et al.  Moneta: A High-Performance Storage Array Architecture for Next-Generation, Non-volatile Memories , 2010, 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture.

[17]  Tajana Simunic,et al.  PDRAM: A hybrid PRAM and DRAM main memory system , 2009, 2009 46th ACM/IEEE Design Automation Conference.

[18]  Rajesh K. Gupta,et al.  NV-Heaps: making persistent objects fast and safe with next-generation, non-volatile memories , 2011, ASPLOS XVI.

[19]  Rami G. Melhem,et al.  Power of One Bit: Increasing Error Correction Capability with Data Inversion , 2013, 2013 IEEE 19th Pacific Rim International Symposium on Dependable Computing.

[20]  Philippe Bonnet,et al.  I/O Speculation for the Microsecond Era , 2014, USENIX Annual Technical Conference.

[21]  Frank Hady,et al.  When poll is better than interrupt , 2012, FAST.

[22]  Paolo Faraboschi,et al.  Operating System Support for NVM+DRAM Hybrid Main Memory , 2009, HotOS.

[23]  Peter Snyder,et al.  tmpfs: A Virtual Memory File System , 1990 .

[24]  Roy H. Campbell,et al.  Consistent and Durable Data Structures for Non-Volatile Byte-Addressable Memory , 2011, FAST.

[25]  Paul H. Siegel,et al.  Characterizing flash memory: Anomalies, observations, and applications , 2009, 2009 42nd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO).

[26]  Jongmoo Choi,et al.  Exploiting non-volatile RAM to enhance flash file system performance , 2007, EMSOFT '07.

[27]  James R. Larus,et al.  Singularity: rethinking the software stack , 2007, OPSR.

[28]  Eunji Lee,et al.  Unioning of the buffer cache and journaling layers with non-volatile memory , 2013, FAST.

[29]  Jaemin Jung,et al.  FRASH: Exploiting storage class memory in hybrid file system for hierarchical storage , 2010, TOS.

[30]  Orion Hodson,et al.  Whole-system persistence , 2012, ASPLOS XVII.

[31]  Vivek S. Pai,et al.  SSDAlloc: Hybrid SSD/RAM Memory Management Made Easy , 2011, NSDI.

[32]  Geoffrey H. Kuenning,et al.  The Conquest file system: Better performance through a disk/persistent-RAM hybrid design , 2006, TOS.

[33]  Young Ik Eom,et al.  Reducing excessive journaling overhead in mobile devices with small-sized NVRAM , 2014, 2014 IEEE International Conference on Consumer Electronics (ICCE).

[34]  Krishna Kant,et al.  SmartCon: SmartCon: Smart Context Switching for Fast Storage Devices , 2015, ACM Trans. Storage.

[35]  유승주 Bloom Filter-based Dynamic Wear Leveling for Phase Change RAM , 2012 .

[36]  Margo I. Seltzer,et al.  Journaling Versus Soft Updates: Asynchronous Meta-data Protection in File Systems , 2000, USENIX Annual Technical Conference, General Track.

[37]  Ivo Bolsens,et al.  Proceedings of the conference on Design, Automation & Test in Europe , 2000 .

[38]  A. L. Narasimha Reddy,et al.  SCMFS: A file system for Storage Class Memory , 2011, 2011 International Conference for High Performance Computing, Networking, Storage and Analysis (SC).

[39]  Winfried W. Wilcke,et al.  Storage-class memory: The next storage system technology , 2008, IBM J. Res. Dev..

[40]  Luis Ceze,et al.  Operating System Implications of Fast, Cheap, Non-Volatile Memory , 2011, HotOS.

[41]  Seung-Ho Lim,et al.  PFFS: a scalable flash memory file system for the hybrid architecture of phase-change RAM and NAND flash , 2008, SAC '08.

[42]  Dhabaleswar K. Panda,et al.  Beyond block I/O: Rethinking traditional storage primitives , 2011, 2011 IEEE 17th International Symposium on High Performance Computer Architecture.

[43]  Dongil Park,et al.  Resolving journaling of journal anomaly in android I/O: multi-version B-tree with lazy split , 2014, FAST.

[44]  Jinpeng Wei,et al.  Software Persistent Memory , 2012, USENIX Annual Technical Conference.