High Velocity Kernel File Systems with Bento

High development velocity is critical for modern cloud systems. However, rapid development and release cycles have mostly skipped operating systems. Modifications to behavior in Linux, the most widely used server operating system in the cloud, must be done slowly to minimize risk of introducing bugs, be limited in scope, or be implemented in userspace with a potential performance penalty. We propose Bento, a framework for high velocity development of Linux kernel file systems. Bento is inspired by the recent availability of type-safe, non-garbage collected languages like Rust. It interposes a thin layer between kernel calls to the file system and file system calls back to the kernel, exposing alternative interfaces to enable kernel file systems written in safe Rust. Future work will provide support for online upgrades, userspace debugging, and composable filesystems. We evaluate Bento by using it to implement the xv6 file system and comparing against baselines written using the kernel VFS layer and FUSE. We find that the Bento filesystem achieves comparable performance to the VFS version and much better performance than the FUSE version. We also evaluate against ext4 on the macrobenchmarks and find that ext4 performs between 33% and 3.2x better than the Bento xv6 file system.

[1]  Dilma Da Silva,et al.  Providing Dynamic Update in an Operating System , 2005, USENIX Annual Technical Conference, General Track.

[2]  Nicolae Tapus,et al.  LKL: The Linux kernel library , 2010, 9th RoEduNet IEEE International Conference.

[3]  Cody Cutler,et al.  The benefits and costs of writing a POSIX kernel in a high-level language , 2018, OSDI.

[4]  Kyung Dong Ryu,et al.  Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels , 2007, EuroSys '07.

[5]  Miguel Castro,et al.  Fast byte-granularity software fault isolation , 2009, SOSP '09.

[6]  Adrian Schüpbach,et al.  The multikernel: a new OS architecture for scalable multicore systems , 2009, SOSP '09.

[7]  Marco Canini,et al.  Assise: Performance and Availability via NVM Colocation in a Distributed File System , 2019, ArXiv.

[8]  Amin Vahdat,et al.  Transparent Result Caching , 1997, USENIX Annual Technical Conference.

[9]  Brian N. Bershad,et al.  Extensibility safety and performance in the SPIN operating system , 1995, SOSP.

[10]  Xi Wang,et al.  Software fault isolation with API integrity and multi-principal modules , 2011, SOSP.

[11]  Adam Chlipala,et al.  Using Crash Hoare logic for certifying the FSCQ file system , 2015, USENIX Annual Technical Conference.

[12]  Mark Handley,et al.  Network stack specialization for performance , 2013, HotNets.

[13]  Xi Wang,et al.  Hyperkernel: Push-Button Verification of an OS Kernel , 2017, SOSP.

[14]  Haibo Chen,et al.  Live updating operating systems using virtualization , 2006, VEE '06.

[15]  Timothy Roscoe,et al.  Decoupling Cores, Kernels, and Operating Systems , 2014, OSDI.

[16]  Andrea C. Arpaci-Dusseau,et al.  File Systems as Processes , 2019, HotStorage.

[17]  Timothy Roscoe,et al.  Arrakis , 2014, OSDI.

[18]  Nicolas Christin,et al.  Push-Button Verification of File Systems via Crash Refinement , 2016, USENIX Annual Technical Conference.

[19]  Martín Casado,et al.  The Design and Implementation of Open vSwitch , 2015, NSDI.

[20]  Pandian Raju,et al.  Finding Crash-Consistency Bugs with Bounded Black-Box Crash Testing , 2018, OSDI.

[21]  Jing Liu,et al.  I'm Not Dead Yet!: The Role of the Operating System in a Kernel-Bypass Era , 2019, HotOS.

[22]  Robert Wahbe,et al.  Efficient software-based fault isolation , 1994, SOSP '93.

[23]  Amin Vahdat,et al.  Snap: a microkernel approach to host networking , 2019, SOSP.

[24]  Antti Kantee,et al.  Rump File Systems: Kernel Code Reborn , 2009, USENIX Annual Technical Conference.

[25]  Ashish Bijlani,et al.  Extension Framework for File Systems in User space , 2019, USENIX Annual Technical Conference.

[27]  John C.S. Lui,et al.  Securing the Device Drivers of Your Embedded Systems: Framework and Prototype , 2019, ARES.

[28]  Erez Zadok,et al.  FIST: a language for stackable file systems , 2000, OPSR.

[29]  Brian N. Bershad,et al.  User-level interprocess communication for shared memory multiprocessors , 1991, TOCS.

[30]  Abutalib Aghayev,et al.  File systems unfit as distributed storage backends: lessons from 10 years of Ceph evolution , 2019, SOSP.

[31]  Christopher Frost,et al.  Spanner: Google's Globally-Distributed Database , 2012, OSDI.

[32]  Thomas E. Anderson,et al.  TAS: TCP Acceleration as an OS Service , 2019, EuroSys.

[33]  Thomas E. Anderson,et al.  Strata: A Cross Media File System , 2017, SOSP.

[34]  Margo I. Seltzer,et al.  Provenance-Aware Storage Systems , 2006, USENIX ATC, General Track.

[35]  M. Frans Kaashoek,et al.  Ksplice: automatic rebootless kernel updates , 2009, EuroSys '09.

[36]  Yogen K. Dalal,et al.  Pilot: an operating system for a personal computer , 1980, CACM.

[37]  Jeffrey C. Mogul,et al.  Nines are Not Enough: Meaningful Metrics for Clouds , 2019, HotOS.

[38]  Erez Zadok,et al.  To FUSE or Not to FUSE: Performance of User-Space File Systems , 2017, FAST.

[39]  Christoforos E. Kozyrakis,et al.  IX: A Protected Dataplane Operating System for High Throughput and Low Latency , 2014, OSDI.

[40]  James R. Larus,et al.  Singularity: rethinking the software stack , 2007, OPSR.

[41]  Kushagra Vaid,et al.  Azure Accelerated Networking: SmartNICs in the Public Cloud , 2018, NSDI.

[42]  Nan Hua,et al.  Andromeda: Performance, Isolation, and Velocity at Scale in Cloud Network Virtualization , 2018, NSDI.

[43]  Cristiano Giuffrida,et al.  Safe and automatic live update for operating systems , 2013, ASPLOS '13.

[44]  Philip Levis,et al.  Multiprogramming a 64kB Computer Safely and Efficiently , 2017, SOSP.

[45]  Steven McCanne,et al.  The BSD Packet Filter: A New Architecture for User-level Packet Capture , 1993, USENIX Winter.

[46]  William J. Bolosky,et al.  Mach: A New Kernel Foundation for UNIX Development , 1986, USENIX Summer.

[47]  Dawson R. Engler,et al.  Exokernel: an operating system architecture for application-level resource management , 1995, SOSP.

[48]  Jeff Dike,et al.  A user-mode port of the Linux kernel , 2000, Annual Linux Showcase & Conference.