saurabhkadekodi / WineFS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WineFS

WineFS is a file system for Persistent Memory (PM) which is aimed at maximizing the performance of memory-mapped applications. WineFS uses a novel dual-allocation policy: the memory-mapped application files are allocated with the help of a huge-page aligned allocator whereas the other POSIX application files are allocated with a hole-filling allocator. With the help of dual allocators, WineFS is able to preserve the huge-page-aligned free extents for the memory-mapped applications, in the presence of aging and at high utilization. WineFS uses per-CPU journaling for crash consistency, thus providing high performance and scalability for metadata-heavy workloads as well.

WineFS is built by modifying PMFS by Intel. PMFS provides a good base for WineFS, with its fine-grained journaling mechanism and an on-disk layout that avoids free-space fragmentation. The following optimizations have been added to the PMFS codebase: (a) PM-optimized per-CPU journaling (b) alignment-aware allocator and huge page handling on page faults (c) auxiliary metadata (d) Crash recovery (e) hybrid data atomicity mechanism: 500 LOC

Note: Artifact Evaluation details are in the Experiments page

Contents

  1. Linux-5.1/ contains the Linux 5.1 kernel with WineFS, NOVA, PMFS as loadable modules and ext4-DAX, xfs-DAX as built-in modules
  2. RocksDB/ contains RocksDB source code and YCSB benchmarking suite
  3. Filebench/ contains the Filebench source code and benchmarks
  4. LMDB/ contains the LMDB source code and benchmarks
  5. WiredTiger/ contains the WiredTiger source code and benchmarks
  6. scripts/ contains scripts to compile and run workloads and kernel

Artifact Evaluation

The Experiments page has a list of experiments evaluating WineFS vs ext4-DAX, NOVA and xfs-DAX. The summary is that WineFS outperforms the other file systems on the memory-mapped workloads (RocksDB and LMDB) by up-to 2x, while matching or outperforming other file systems on the other POSIX workloads (Filebench and WiredTiger). Please see the paper for more details.

System Requirements

  1. Ubuntu 16.04 / 18.04 / 20.04 or Fedora 27 / 30
  2. At least 32 GB DRAM
  3. At least 4 cores
  4. Baremetal machine (Not a VM)
  5. Intel Optane DC Persistent Memory module

Setup Kernel

Follow steps in Linux-5.1 to install the Linux 5.1 kernel which has WineFS as a loadable module.

Limitations

WineFS is under active development. Although there are no known bugs, we welcome any bug reports or bug fixes.

Testing

PJD POSIX Test Suite that tests primarily the metadata operations was run on WineFS successfully. WineFS passes all tests.

Contributors

  1. Rohan Kadekodi, UT Austin
  2. Saurabh Kadekodi, Carnegie Mellon University

Acknowledgements

We thank the National Science Foundation, VMware, Google, and Facebook for partially funding this project. We thank Intel and ETRI IITP/KEIT[2014-3-00035] for providing access to Optane DC Persistent Memory to perform our experiments.

Contact

Please contact us at rak@cs.utexas.edu or vijayc@utexas.edu with any questions.

About


Languages

Language:C 95.3%Language:C++ 1.8%Language:Assembly 1.2%Language:Python 0.4%Language:Java 0.4%Language:Makefile 0.3%Language:Shell 0.3%Language:Perl 0.1%Language:SWIG 0.0%Language:Yacc 0.0%Language:Roff 0.0%Language:HTML 0.0%Language:SmPL 0.0%Language:Filebench WML 0.0%Language:M4 0.0%Language:Lex 0.0%Language:CMake 0.0%Language:Awk 0.0%Language:SCSS 0.0%Language:UnrealScript 0.0%Language:PowerShell 0.0%Language:Gherkin 0.0%Language:PHP 0.0%Language:Batchfile 0.0%Language:CSS 0.0%Language:Go 0.0%Language:Raku 0.0%Language:JavaScript 0.0%Language:Lua 0.0%Language:Starlark 0.0%Language:XS 0.0%Language:Clojure 0.0%Language:sed 0.0%Language:Dockerfile 0.0%Language:Ruby 0.0%