Skip to content

mv tuning9b

Matthew Von-Maszewski edited this page Mar 16, 2017 · 1 revision

Status

  • merged to master -
  • code complete - November 18, 2016
  • development started - November 11, 2016

History / Context

Oops! Appears this is the second branch labelled mv-tuning9. The first existed sometime in July of 2014.

This branch primarily improves write performance of a single database. Previous tuning branches looked primarily at Riak scenarios where leveldb would be operating 8 to 128 databases simultaneously. Also, the branch fixes a bug and updates db_bench for some Basho exclusive features.

Bug addressed:

  • gThrottleRate within util/throttle.cc would hang between 1 and 16, never working down to zero. This would keep the throttle active at all times on fast SSD arrays.

Branch description

db/db_bench.cc

db_bench is Google's benchmarking tool for leveldb. Added options for setting Basho's alternate bloom filter, LZ4 compaction, and total memory for flexcache.

db/version_set.cc & .h

VersionSet::Finalize() is responsible for determining how far behind the owning database is with regards to compactions. This function received a thorough review. The biggest change was to eliminate the non-linear penalty calculation. This was originally established to help heavy Riak loads containing large objects. The non-linear penalty was not subtle. This branch restores a linear penalty and uses the size of a write buffer as a measure for how far behind an owning database is with compactions. Also, the penalty is now smoothed over 1 minute intervals.

util/throttle.cc

gThrottleRate previously used a smoothing factor of THROTTLE_SCALING to slow movement of the throttle up and down. However, the throttle actually quit moving once the current throttle was below THROTTLE_SCALING.

Clone this wiki locally