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
Linux-5.1/
contains the Linux 5.1 kernel with WineFS, NOVA, PMFS as loadable modules and ext4-DAX, xfs-DAX as built-in modulesRocksDB/
contains RocksDB source code and YCSB benchmarking suiteFilebench/
contains the Filebench source code and benchmarksLMDB/
contains the LMDB source code and benchmarksWiredTiger/
contains the WiredTiger source code and benchmarksscripts/
contains scripts to compile and run workloads and kernelThe 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.
Follow steps in Linux-5.1 to install the Linux 5.1 kernel which has WineFS as a loadable module.
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
WineFS is under active development. Although there are no known bugs, we welcome any bug reports or bug fixes.
PJD POSIX Test Suite that tests primarily the metadata operations was run on WineFS successfully. WineFS passes all tests.
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
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.
Please contact us at rak@cs.utexas.edu
or vijayc@utexas.edu
with any questions.