Skip to content

mv flexcache

Matthew Von-Maszewski edited this page Sep 23, 2013 · 29 revisions

Status

  • merged to master
  • code complete September 22, 2013
  • development started

History / Context

leveldb contains two caches per database (Riak vnode): file cache and block cache. The user establishes the size of each cache via the Options structure passed to leveldb upon database open. Riak is a very dynamic user of leveldb. Riak can a highly variable number of databases open. And Riak can run for long periods of time, using hundreds to thousands of leveldb .sst table files. Both of these dynamics lead to suboptimal sizing of the two caches since sizes must conform to the worst case, not the most likely.

This branch automates the dynamic sizing of the file cache and block cache while maximizing total memory usage across a dynamic number databases. The variable items considered:

  • different memory allocation between user databases (vnodes) and internal databases (active anti-entropy management, AAE)
  • varying number of active databases (vnodes) as Riak performs handoffs
  • prioritize memory demands of file cache since cost of miss in file cache is much greater than cost of block cache miss

Branch description

pthread exit values

Clone this wiki locally