> Byte-addressable persistent memory (PM) brings hash tables the potential of low latency, cheap persistence and instant recovery.
> We present Dash, a holistic approach to building dynamic and scalable hash tables on real PM hardware with all the aforementioned properties.
> Dash-enabled hash tables can achieve up to ∼3.9×higher performance with up to over 90% load factor and an instant recovery time of 57ms regardless of data size."
Section 1.2:
> Dash uses a combination of new and existing techniques that are carefully engineered to achieve this goal.
> 1. We adopt fingerprinting that was used in PM tree structures to avoid unnecessary PM reads during record probing. The idea is to generate fingerprints (one-byte hashes) of keys and place them compactly to summarize the possible existence of keys.
> 2. Instead of traditional bucket-level locking, Dash uses an optimistic, lightweight flavor of it that relies on verification to detect conflicts, rather than (expensive) shared locks. This allows Dash to avoid PM writes for search operations.
> 3. Dash retains desirable properties. We propose a new load balancing strategy to postpone segment splits with improved space utilization. To support instant recovery, we limit the amount of work to be done upon recovery to be small ..., and amortize recovery work to runtime. Compared to prior work that handles PM programming issues in ad hoc ways, Dash uses PM programming models ... to systematically handle crash consistency, PM allocation and achieve instant recovery.
> Although these techniques are not all new, Dash is the first to integrate them for building hash tables that scale without sacrificing features on real PM.