Module Tjr_kv.Kv_store_with_lru

A KV store with an LRU cache frontend.

Architecture

We construct the following...

Queues: q_lru_pc and q_pc_bt

  • q_lru_pc, a msg queue from the lru to the pcache
  • q_pc_bt, a msg queue from the pcache to the B-tree

Blk allocator

  • provides blk alloc/free

LRU

  • lru_ops, concurrent-safe map operations

Pcache

  • pcache_thread, which takes msgs from q_pc_bt and executes against the pcache; also performs detach occasionally and enqueues messages to q_pc_bt

B-tree

  • btree_thread, listening to q_pc_bt and executing operations against the B-tree

Root manager

  • root_man, which is responsible for persisting the roots for the B-tree and the pcache
val runtime_config : Kv_config_runtime.S.config lazy_t
type params = < lru_params : < evict_count : int; max_size : int; >; pcache_blocks_limit : int; >
module type S = sig ... end
module Make : functor (S : S) -> sig ... end
module Examples : sig ... end
module Test : functor () sig ... end