Adapting byte addressable memory storage to user-level file system services

Widely available distributed file systems for big data processing are implemented as user-level services since the existing file systems, which are implemented in the operating system kernel, cannot satisfy their requirements. They usually employ file systems in the kernel to persistently save their data in their local systems; thus, the kernel is always interposed for their access the storage devices. Now, next generation non-volatile memory technologies are emerging as byte addressable memory devices that can be used as high performance storage, for which the interposition of the kernel is the source of overhead. This paper proposes the adaption of memory storage to user-level file system services and the convergence of such services and memory storage. User-level file system services are connected to memory storage through the library implementation of a file system, and a library file system can directly interact with memory storage through the memory interface by mapping memory storage onto a user process address space. We implemented a library file system on Linux. The experiment results show that the the implemented library file system outperforms the existing file system in the kernel and performs 1.9x and 6.5x faster for reading and writing, respectively, for typical cases.

[1]  Hairong Kuang,et al.  The Hadoop Distributed File System , 2010, 2010 IEEE 26th Symposium on Mass Storage Systems and Technologies (MSST).

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

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

[4]  P. Guedes,et al.  Object-oriented interfaces in the Mach 3.0 multi-server system , 1991, Proceedings 1991 International Workshop on Object Orientation in Operating Systems.

[5]  GhemawatSanjay,et al.  The Google file system , 2003 .

[6]  Robert Grimm,et al.  Application performance and flexibility on exokernel systems , 1997, SOSP.

[7]  Alessandro Forin,et al.  UNIX as an Application Program , 1990, USENIX Summer.

[8]  Onur Mutlu,et al.  Architecting phase change memory as a scalable dram alternative , 2009, ISCA '09.

[9]  Jon Crowcroft,et al.  Unikernels: library operating systems for the cloud , 2013, ASPLOS '13.

[10]  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.

[11]  Dawson R. Engler,et al.  Exokernel: an operating system architecture for application-level resource management , 1995, SOSP.