DEFUSE: An Interface for Fast and Correct User-Space File-System Access

Abstract

Traditionally, the only option for developers was to implement file systems (FSs) via drivers within the operating system kernel. However, there exists a growing number of file systems (FSs), notably distributed FSs for the cloud, whose interfaces are implemented solely in user space to (i) isolate FS logic, (ii) take advantage of user space libraries, and/or (iii) for rapid FS prototyping. Common interfaces for implementing FSs in user space exist, but they do not guarantee POSIX compliance in all cases, or suffer from considerable performance penalties due to high amounts of wait context switches between kernel and user space processes. We propose DEFUSE: an interface for user space FSs that provides fast accesses while ensuring access correctness and requiring no modifications to applications. DEFUSE achieves significant performance improvements over existing user space FS interfaces thanks to its novel design that drastically reduces the number of wait context switches for FS accesses. Additionally, to ensure access correctness, DEFUSE maintains POSIX compliance for FS accesses thanks to three novel concepts of bypassed file descriptor (FD) lookup, FD stashing, and user space paging. Our evaluation spanning a variety of workloads shows that by reducing the number of wait context switches per workload from as many as 16,000 or 41,000 with FUSE down to 9 on average, DEFUSE increases performance 2x over existing interfaces for typical workloads and by as many as 10x in certain instances.

Publication
ACM Transactions on Storage, Volume 18, Issue 3