{
  "slug": "kvell",
  "term": "KVell",
  "aliases": [],
  "definition": "KVell is a research key-value store that combines per-worker memory indexes with unsorted slab files and batched direct I/O.",
  "note": "Layout: same-size single-page updates overwrite their slab slot instead of entering an LSM compaction pipeline. A cache miss still requires a page read before its rewrite. [kvell-paper] [kvell-slab]\n\nTrade-offs: small-item scans can fetch a page per item, and paging the key-location index sharply reduces lookup throughput. The index budget is separate from the data-page cache. [kvell-paper]\n\nRecovery: the design assumes power-fail-atomic 4 KiB page writes. Its recovery experiment kills the process, not device power. Ordinary scans return current values per key, not a single snapshot. [kvell-paper]\n\nArtifact: the pinned prototype documents no support for items larger than 4 KiB, although the paper describes a multi-block design. KVell+ is a separate snapshot-isolation extension. [kvell-overview] [kvell-project]",
  "related": [
    "key-value-separation",
    "direct-io",
    "nvme-atomic-write-unit-power-fail"
  ],
  "citations": [
    {
      "id": "kvell-paper",
      "title": "Lepers et al. KVell. SOSP 2019, pp. 447-461, sections 5.2-5.6, 6.5-6.6. DOI: 10.1145/3341301.3359628.",
      "url": "https://github.com/BLepers/KVell/blob/a6cbc0cb186c7934dc6be785225d809f62730fea/sosp19-final40.pdf",
      "accessed": "2026-11-11"
    },
    {
      "id": "kvell-slab",
      "title": "KVell author code, revision a6cbc0cb: slab.c, single-page update callbacks.",
      "url": "https://github.com/BLepers/KVell/blob/a6cbc0cb186c7934dc6be785225d809f62730fea/slab.c#L197-L247",
      "accessed": "2026-11-11"
    },
    {
      "id": "kvell-overview",
      "title": "KVell author artifact, revision a6cbc0cb: OVERVIEW, prototype scope and item-size limits.",
      "url": "https://github.com/BLepers/KVell/blob/a6cbc0cb186c7934dc6be785225d809f62730fea/OVERVIEW.md",
      "accessed": "2026-11-11"
    },
    {
      "id": "kvell-project",
      "title": "KVell author repository: distinct SOSP KVell and OSDI KVell+ artifacts.",
      "url": "https://github.com/BLepers/KVell/blob/a6cbc0cb186c7934dc6be785225d809f62730fea/README.md",
      "accessed": "2026-11-11"
    },
    {
      "id": "open-manual",
      "title": "Linux man-pages: open(2), O_DIRECT does not provide the synchronized I/O guarantees of O_SYNC.",
      "url": "https://man7.org/linux/man-pages/man2/open.2.html",
      "accessed": "2026-11-11"
    },
    {
      "id": "hesela",
      "title": "Hesela: KVell, page traffic and persistence assumptions.",
      "url": "https://hesela.com/analyses/key-value-separation-cleaning-cost/#kvell-page-cost",
      "accessed": "2026-11-11"
    }
  ],
  "status": "research",
  "advantages": [],
  "limitations": [
    "O_DIRECT alone does not provide O_SYNC durability guarantees; atomic page writes and persistence are separate requirements. [open-manual] [kvell-paper]"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-11",
  "provenance": [
    "Full 15-page paper and pinned update source reviewed. No KVell execution, power-loss experiment or benchmark reproduction.",
    "Prototype restrictions are scoped to a6cbc0cb186c7934dc6be785225d809f62730fea, not inferred for every later branch."
  ]
}
