PHPRX: An Efficient Hash Table for Persistent Memory
Diego Cepeda, Wojciech Golab · 2021
Volatile media have dominated the realm of main memory on servers and desktop computers for decades. In 2019, Intel released the Optane Data Center Persistent Memory Module (DCPMM), which offers the capacity and persistence of block devices while providing the byte addressability and low latency of DRAM. These new memory modules allow programmers to develop data structures that can survive in main memory across crashes and power failures, without relying on secondary power sources such as batteries. This work presents the design of a persistent memory hash table data structure that incorporates several features to maximize efficiency: the locks for concurrency control are kept in volatile DRAM, an embedded memory allocator is used, a parallel table resize operation is implemented, and a mechanism is provided to incrementally expand the underlying memory-mapped file. We compare PHPRX experimentally against the Dash persistent memory hash table published recently by Lu et al., and demonstrate substantial speed-ups on an Intel Xeon server equipped with genuine Intel Optane DCPMM. Our performance advantage holds despite PHPRX using a space-efficient incremental approach to expanding the underlying memory-mapped file, as opposed to the much simpler static allocation approach used by Dash.