2 research outputs found
CedrusDB: Persistent Key-Value Store with Memory-Mapped Lazy-Trie
As a result of RAM becoming cheaper, there has been a trend in key-value
store design towards maintaining a fast in-memory index (such as a hash table)
while logging user operations to disk, allowing high performance under
failure-free conditions while still being able to recover from failures. This
design, however, comes at the cost of long recovery times or expensive
checkpoint operations. This paper presents a new in-memory index that is also
storage-friendly. A "lazy-trie" is a variant of the hash-trie data structure
that achieves near-optimal height, has practical storage overhead, and can be
maintained on-disk with standard write-ahead logging.
We implemented CedrusDB, persistent key-value store based on a lazy-trie. The
lazy-trie is kept on disk while made available in memory using standard
memory-mapping. The lazy-trie organization in virtual memory allows CedrusDB to
better leverage concurrent processing than other on-disk index schemes (LSMs,
B+-trees). CedrusDB achieves comparable or superior performance to recent
log-based in-memory key-value stores in mixed workloads while being able to
recover quickly from failures
QWin: Enforcing Tail Latency SLO at Shared Storage Backend
Consolidating latency-critical (LC) and best-effort (BE) tenants at storage
backend helps to increase resources utilization. Even if tenants use dedicated
queues and threads to achieve performance isolation, threads are still contend
for CPU cores. Therefore, we argue that it is necessary to partition cores
between LC and BE tenants, and meanwhile each core is dedicated to run a
thread. Expect for frequently changing bursty load, fluctuated service time at
storage backend also drastically changes the need of cores. In order to
guarantee tail latency service level objectives (SLOs), the abrupt changing
need of cores must be satisfied immediately. Otherwise, tail latency SLO
violation happens. Unfortunately, partitioning-based approaches lack the
ability to react the changing need of cores, resulting in extreme spikes in
latency and SLO violation happens. In this paper, we present QWin, a tail
latency SLO aware core allocation to enforce tail latency SLO at shared storage
backend. QWin consists of an SLO-to-core calculation model that accurately
calculates the number of cores combining with definitive runtime load
determined by a flexible request-based window, and an autonomous core
allocation that adjusts cores at adaptive frequency by dynamically changing
core policies. When consolidating multiple LC and BE tenants, QWin outperforms
the-state-of-the-art approaches in guaranteeing tail latency SLO for LC tenants
and meanwhile increasing bandwidth of BE tenants by up to 31x.Comment: 14 pages, 11 figure