nvmkv · research

NVMKV

NVMKV is a research key-value store that maps keys into a sparse flash address space and relies on extended FTL primitives for persistence.

Related Observatory article: NVMKV on hesela.com

Hashing selects a virtual slot; the FTL supplies physical mapping and allocation. Unwritten virtual gaps consume address space without reserving flash capacity. This removes a separate key-to-location index, not the FTL map or every cache. [2]

The 2015 contract makes individual basic operations atomic and serializable, including operations submitted in a batch; the batch itself is not one transaction. Conditional primitives are emulated in that prototype. Its single-I/O goal is not a bound for every lookup or deletion. Pool deletion records invalidation before asynchronous reclamation. [1]

The published library requires sparse addressing, atomic writes and persistent TRIM from its lower layer. Those requirements are not implied by an ordinary block-device interface. The pinned API declares batch get and put calls without specifying whole-batch atomicity. [3] [4] In that revision, batch reads call individual gets in sequence; batch writes can split trimming and writing into separate atomic vector calls. [5] [6]

A b-bit sector offset addresses 2^b sectors. At 512 bytes per sector, 11 bits span 1 MiB and 12 bits span 2 MiB. This arithmetic describes virtual extent size, not a maximum accepted value or physical flash reservation. [7]

Relations

related
Flash translation layer (FTL), FlashStore, SkimpyStash, FAWN-DS, Key-value separation

Limitations

  • Hash-based iteration does not preserve key order, and small records can waste space through sector rounding. [1]
  • The pinned API declares a 1,047,552-byte value ceiling (1 MiB minus 1 KiB). Its README specifies 1 MiB minus one block for 2 KiB or 4 KiB block configurations. [4, 3]

Citations

  1. Marmol et al. NVMKV: A Scalable, Lightweight, FTL-aware Key-Value Store. USENIX ATC 2015, sections 5, 7 and 9. (accessed 2026-11-14)
  2. Marmol et al. NVMKV: A Scalable and Lightweight Flash Aware Key-Value Store. HotStorage 2014, sections 2-3. (accessed 2026-11-14)
  3. OpenNVM NVMKV library README, revision 1cebb5d713aa9043a1cd9eb661bfbcdb73b7f006. (accessed 2026-11-15)
  4. OpenNVM API: value-size constant and batch declarations, revision 1cebb5d713aa9043a1cd9eb661bfbcdb73b7f006. (accessed 2026-11-15)
  5. OpenNVM store manager: batch read loop and split trim/write path, revision 1cebb5d713aa9043a1cd9eb661bfbcdb73b7f006. (accessed 2026-11-15)
  6. OpenNVM write wrapper: atomic vector dispatch, revision 1cebb5d713aa9043a1cd9eb661bfbcdb73b7f006. (accessed 2026-11-14)
  7. Hesela: exact virtual sector-address arithmetic, with executable checks. (accessed 2026-11-14)
Sources & caveats
  • Source review of historical prototypes and a pinned API, not an executed NVMKV benchmark or crash-recovery test.
  • ATC15 evaluated two ioMemory systems and omitted YCSB workload E. Its throughput comparisons are not forecasts for current SSDs. [1]
  • ATC15 section 5.1 labels 11 sector-offset bits at 512 bytes as 2 MB; multiplication gives 1,048,576 bytes (1 MiB). This does not establish the implementation's value limit. [1] [7]

JSON: /data/terms/nvmkv.json

Published by Hesela team · Updated

Report a correction · Editorial standards · Reuse guidance

Cite this page
Hesela team. NVMKV. Hesela. 2026-11-15. https://hesela.dev/terms/nvmkv/