Enabling Efficient Slab-based Allocator on Fast NVMe SSD
Baoyue Yan · 2022 Asia Conference on Algorithms, Computing and Machine Learning (CACML) · 2022
The storage community has been struggling to exploit modern fast NVMe SSD in the storage software stack. This paper presents a new storage software layer, called SNallo, to efficiently support the upper software stack, i.e., file systems or KV stores. The key idea of the software layer is to introduce traditional DRAM allocators into block-addressable NVMe SSD with the key observation that modern fast NVMe SSD performs nearly as a random access device. However, SSD and DRAM are naturally different in terms of I/O granularity and persistent requirement. SNallo proposes an optimized layout algorithm considering fragmentation and I/O granularity, a two-phase write to achieve fast persistence, a fast address map-ping strategy between memory and block address, and light-weight defragmentation to further reduce fragmentation. To deliver efficient I/Os, SNallo uses SPDK to enable asynchronous per-core I/O processing. We build a KV store on SNallo and the evaluation result of YCSB benchmark shows that the new KV(key-value) store significantly outperforms all baselines in terms of space utilization, throughput, and latency.