Building High-Performance Storage Systems for Persistent Memory
Date: July 14, 2022 | 3.00 p.m. (GMT+1)
Speaker: Rohan Kadekodi, UT Austin
Moderator: Tânia Esteves, INESC TEC & University of Minho
Persistent Memory (PM) refers to storage class memory that offers non-volatility, low latency and high bandwidth. A number of application can benefit from PM due to its unique characteristics. Legacy applications that are built for HDDs and SSDs use POSIX system-calls to access data on PM. Newer applications designed specifically to be used on PM access data by memory mapping files and performing loads/stores from user-space to PM-resident addresses.
First, we present SplitFS, a file system for PM aimed at accelerating POSIX system-call applications. SplitFS presents a novel split of responsibilities between a user-space library file system and an existing kernel PM file system. The user-space library file system handles data operations by intercepting POSIX calls, memory-mapping the underlying files, and serving the reads and writes using processor loads and stores. Metadata operations are handled by the kernel PM file system (ext4 DAX). In this way, SplitFS reduces software overhead significantly compared to the state-of-the-art POSIX file system atop PM.
Next, we introduce WineFS, a novel hugepage-aware PM file system that is aimed at accelerating memory-mapped applications. WineFS uses an alignment-aware allocation policy that allocated huge page-aligned extents for the memory-mapped files, while using up fragmented unaligned holes for the small files. WineFS uses a suitable on-PM layout and per-CPU journaling to ensure high scalability while avoiding free-space fragmentation and preserving huge pages (and thus, high performance) with age.
Register here.