

Slowly and over time-although perhaps not overly noticeable-user-space file systems have come back into today's storage systems. Kernel-space implementations avoid the potentially high overheads of passing requests between the kernel and user-space daemon (FUSE daemon)-communications that are inherent to the user-space and micro-kernel implementations. The file system is one of the oldest and perhaps most common interfaces for applications to access their data.Although in the years of micro-kernel-based Operating Systems (OS), some file systems were implemented in user space, the status quo was always to implement file systems as part of the monolithic OS kernels. Our conclusion is that user-space file systems can indeed be used in production (non-“toy”) settings, but their applicability depends on the expected workloads. On the resource utilization side, FUSE can increase relative CPU utilization by up to 31% and underutilize disk bandwidth by as much as $-80$% compared to Ext4, though for many data-intensive workloads the impact was statistically indistinguishable. Our experiments indicate that depending on the workload and hardware used, performance degradation (throughput) caused by FUSE can be completely imperceptible or as high as $-$83%, even when optimized and latencies of FUSE file system operations can be increased from none to 4 $\times$ when compared to Ext4. We instrumented FUSE to extract useful statistics and traces, which helped us analyze its performance bottlenecks and present our analysis results. We present FUSE performance and also resource utilization with various mount and configuration options, using 45 different workloads that were generated using Filebench on two different hardware configurations. We characterize its performance and resource utilization for a wide range of workloads. In this article, we analyze the design and implementation of a well-known user-space file system framework, FUSE, for Linux. As a result, the topic of user-space file systems remains rather controversial: while some consider user-space file systems a “toy” not to be used in production, others develop full-fledged production file systems in user space. Low performance is considered the main disadvantage of user-space file systems but the extent of this problem has never been explored systematically. As the complexity of file systems grew, many new file systems began being developed in user space. Traditionally, file systems were implemented as part of operating systems kernels, which provide a limited set of tools and facilities to a programmer.
