File Systems as Processes

Overview

File Systems as Processes (FSP), is a new storage architecture designed for modern ultra-fast storage devices. FSP will build a file system as a standalone user-level process. As such, file system is capable of delivering high performance by avoid all the kernel interleaving. FSP approach will also guarantee essential file system properties and bring up great developing velocity benefit.

Motivation

We are now heading towards a storage era of ultra-fast devices, with latency down to several microseconds. However, in spite of the fast devices, one major hurdle to realizing its promise for applications is that, the operating system architecture, cannot keep up the pace. Spending microseconds for single disk access looks fine for HDD, while in these days, the kernel trapping overhead becomes the bottleneck and not negligible anymore. It is thus critical for file systems to get rid of kernel overhead, but without compromising essential properties. Besides, building a file system to leverage both the modern multi-core advances and device optimized developing toolkits will help to realize potential performance gain of devices.

Idea

We propose ”File Systems as Processes” (FSP), which builds a direct-access file system as a user-level process.

FSP mainly includes three components. FS Process, is a standalone user-level process. It will manage the devices directly in its own address space and occupy a dedicated CPU core. We have a library called FS Lib, which provides POSIX-like API to applications. It will help application send(recv) request to(from) Fs Process. There is a communication channel, sitting between Every single application and Fs Process, which provides efficient and isolated communication support based on shared memory. And OS kernel is involved once for each application to setup the communication channel.

This approach has several advantages. First, It will boost the developer velocity. Because it is much easier to develop and debug in user-level rather than doing kernel development. Second, a standalone process can be isolated from user applications, and thus can be a trusted entity, which provides all the essential file system properties, like integrity, concurrency, crash-consistency and security. The most important benefit is that, by locating file system on one core, having it manage device directly in user space the file system process is able to deliver high performance.

Paper
File Systems as Processes, HotStorage 2019
Talks
Slides from talk at HotStorage