utsaslab / WineFS

WineFS (SOSP 21): a huge-page aware file system for persistent memory
34 stars 2 forks source link
file-system persistent-memory

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

Please cite this paper if you use WineFS:

WineFS: a hugepage-aware file system for persistent memory that ages gracefully.
Rohan Kadekodi, Saurabh Kadekodi, Soujanya Ponnapalli, Harshad Shirwadkar, Greg Ganger, Aasheesh Kolli, Vijay Chidambaram.
Proceedings of the 28th ACM Symposium on Operating Systems Principles (SOSP '21)
Paper PDF. Bibtex. Talk Slides. Talk video (10 min)

@InProceedings{KadekodiEtAl21-WineFS,
      title =        "{WineFS: a hugepage-aware file system for persistent memory that ages gracefully}",
      author =       "Rohan Kadedodi and Saurabh Kadekodi and Soujanya Ponnapalli and Harshad Shirwadkar and Greg Ganger and Aasheesh Kolli and  Vijay Chidambaram",
      booktitle =    "Proceedings of the 28th ACM Symposium on Operating
                  Systems Principles (SOSP '21)",
      month =        "October",
      year =         "2021",
 }

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.

Mounting WineFS

WineFS in the default mode ensures metadata consistency, data consistency and synchronous system-calls (Similar to NOVA, Strata and SplitFS-strict). WineFS in this mode can be mounted using:

$ sudo mount -t winefs -o init,strict /dev/pmem0 /mnt/pmem0

WineFS also contains a relaxed mode that provides metadata consistency and synchronous system-calls (Similar to NOVA-Relaxed, PMFS, ext4-DAX, xfs-DAX, SplitFS-Sync). WineFS in this mode can be mounted using:

$ sudo mount -t winefs -o init /dev/pmem0 /mnt/pmem0

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.

License

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

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.