viper · research

Viper

Viper is a research key-value store that keeps a volatile hash index in DRAM and records in persistent memory.

Related Observatory article: Viper on hesela.com

Layout: the offset map adapts CCEH as a volatile index. Clients write records directly into persistent pages aligned to the configured DIMM interleaving, rather than staging them in a DRAM write buffer. [1]

Recovery: rebuilding the offset map requires scanning stored records. Fast steady-state lookup therefore does not imply an instant restart. The paper describes both fixed- and variable-length recovery. [1]

Implementation: at revision 79ebf6e9248b, Viper<std::string, std::string>::recover_database() instead throws "Not implemented yet". The constructor calls recovery when opening an existing pool. Variable-length put/get support must not be read as implemented string-pool recovery at that revision. [2]

Measurement: the pinned recovery benchmark fills fixed-size records, closes the store, then times open(). That procedure is not evidence of a power-failure test. Its fixture also removes pools whose path lacks /dev/dax, so changing the benchmark to a directory requires reviewing teardown first. [3] [4]

Relations

related
Persistent memory, Cacheline-Conscious Extendible Hashing, Persistence ordering, Direct Access, Key-value separation

Citations

  1. Benson, Makait and Rabl. Viper: An Efficient Hybrid PMem-DRAM Key-Value Store. PVLDB 14(9), 1544-1556 (2021). DOI: 10.14778/3461535.3461543. (accessed 2026-11-14)
  2. Viper authors. viper.hpp: constructor and fixed/string recovery implementations, revision 79ebf6e9248b. (accessed 2026-11-14)
  3. Viper authors. recovery_bm.cpp: fixed-size prefill, teardown and timed reopen, revision 79ebf6e9248b. (accessed 2026-11-14)
  4. Viper authors. viper_fixture.hpp: DeInitMap and path-dependent pool removal, revision 79ebf6e9248b. (accessed 2026-11-14)

Further reading

  1. Hesela: persistent memory, persistence domains and DAX. (accessed 2026-11-14)
Sources & caveats
  • Full-paper and pinned-source review. No engine execution, benchmark reproduction or crash-injection experiment was performed.
  • Paper sections 3, 4.7 and 5.3.9 describe architecture and recovery. Implementation observations apply only to the linked revision, not every version of the design.
  • The paper evaluates Optane hardware with devdax; its historical performance results are not a current ranking or a guarantee for other persistent-memory platforms.

JSON: /data/terms/viper.json

Published by Hesela team · Updated

Report a correction · Editorial standards · Reuse guidance

Cite this page
Hesela team. Viper. Hesela. 2026-11-14. https://hesela.dev/terms/viper/