Soft Updates Made Simple and Fast on Non-volatile Memory

Fast, byte-addressable NVM promises near cache latency and near memory bus throughput for file system operations. However, unanticipated cache line eviction may lead to disordered metadata update and thus existing NVM file systems (NVMFS) use synchronous cache flushes to ensure consistency, which extends critical path latency. In this paper, we revisit soft updates, an intriguing idea that eliminates most synchronous metadata updates through delayed writes and dependency tracking, in the context of NVMFS. We show that on one hand byteaddressability of NVM significantly simplifies dependency tracking and enforcement by allowing better directory organization and closely matching the per-pointer dependency tracking of soft updates. On the other hand, per-cache-line failure atomicity of NVM cannot ensure the correctness of soft updates, which relies on block write atomicity; page cache, which is necessary for dual views in soft updates, becomes inefficient due to double writes and duplicated metadata. To guarantee the correctness and consistency without synchronous cache flushes and page cache, we propose pointer-based dual views, which shares most data structures but uses different pointers in different views, to allow delayed persistency and eliminate file system checking after a crash. In this way, our system, namely SoupFS1, significantly shortens the critical path latency by delaying almost all synchronous cache flushes. We have implemented SoupFS as a POSIX-compliant file system for Linux and evaluated it against state-of-the-art NVMFS like PMFS and NOVA. Performance results show that SoupFS can have notably lower latency and modestly higher throughput compared to existing NVMFS.

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

[2]  Lei Zhang,et al.  Generalized file system dependencies , 2007, SOSP.

[3]  Andrea C. Arpaci-Dusseau,et al.  Consistency without ordering , 2012, FAST.

[4]  Yuan Xie,et al.  Kiln: Closing the performance gap between systems with and without persistence support , 2013, 2013 46th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO).

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

[6]  Robert B. Hagmann,et al.  Reimplementing the Cedar file system using logging and group commit , 1987, SOSP '87.

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

[8]  Yale N. Patt,et al.  Metadata update performance in file systems , 1994, OSDI '94.

[9]  Sanjay Kumar,et al.  System software for persistent memory , 2014, EuroSys '14.

[10]  Joo Young Hwang,et al.  F2FS: A New File System for Flash Storage , 2015, FAST.

[11]  Edwin Hsing-Mean Sha,et al.  Designing an efficient persistent in-memory file system , 2015, 2015 IEEE Non-Volatile Memory System and Applications Symposium (NVMSA).

[12]  Koji Sato,et al.  The Linux implementation of a log-structured file system , 2006, OPSR.

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

[14]  Hideaki Kimura,et al.  FOEDUS: OLTP Engine for a Thousand Cores and NVRAM , 2015, SIGMOD Conference.

[15]  Youyou Lu,et al.  A high performance file system for non-volatile main memory , 2016, EuroSys.

[16]  Mendel Rosenblum,et al.  The design and implementation of a log-structured file system , 1991, SOSP '91.

[17]  Haibo Chen,et al.  Rethinking Benchmarking for NVM-based File Systems , 2016, APSys.

[18]  Andrea C. Arpaci-Dusseau,et al.  IRON file systems , 2005, SOSP '05.

[19]  Stephen M. Rumble,et al.  Log-structured memory for DRAM-based storage , 2014, FAST.

[20]  Yale N. Patt,et al.  Soft updates: a solution to the metadata update problem in file systems , 2000 .

[21]  Jian Xu,et al.  NOVA: A Log-structured File System for Hybrid Volatile/Non-volatile Main Memories , 2016, FAST.

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

[23]  Thomas F. Wenisch,et al.  High-Performance Transactions for Persistent Memories , 2016, ASPLOS.

[24]  Gregory R. Ganger,et al.  Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem , 1999, USENIX Annual Technical Conference, FREENIX Track.

[25]  Sang-Won Lee,et al.  SFS: random write considered harmful in solid state drives , 2012, FAST.

[26]  Haibo Chen,et al.  SSMalloc: a low-latency, locality-conscious memory allocator with stable performance scalability , 2012, APSys.

[27]  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).

[28]  Andrea C. Arpaci-Dusseau,et al.  Optimistic crash consistency , 2013, SOSP.

[29]  Michael M. Swift,et al.  Aerie: flexible file-system interfaces to storage-class memory , 2014, EuroSys '14.

[30]  Lidong Zhou,et al.  Transactional Flash , 2008, OSDI.

[31]  James Lau,et al.  File System Design for an NFS File Server Appliance , 1994, USENIX Winter.

[32]  Carl Staelin,et al.  An Implementation of a Log-Structured File System for UNIX , 1993, USENIX Winter.

[33]  Josef Bacik,et al.  BTRFS: The Linux B-Tree Filesystem , 2013, TOS.

[34]  Thomas F. Wenisch,et al.  Memory persistency , 2014, 2014 ACM/IEEE 41st International Symposium on Computer Architecture (ISCA).

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

[36]  Jun Li,et al.  A Framework for Emulating Non-Volatile Memory Systemswith Different Performance Characteristics , 2015, ICPE.

[37]  Michael Wu,et al.  eNVy: a non-volatile, main memory storage system , 1994, ASPLOS VI.

[38]  Bingsheng He,et al.  NV-Tree: Reducing Consistency Cost for NVM-based Single Level Systems , 2015, FAST.