push
travis-ci
<a href="https://github.com/tarantool/tarantool/commit/<a class=hub.com/tarantool/tarantool/commit/96532cdd130371aa5fde82f330fffcf63fbe5529">96532cdd1<a href="https://github.com/tarantool/tarantool/commit/96532cdd130371aa5fde82f330fffcf63fbe5529">">vinyl: randomize range compaction to avoid IO load spikes Since all ranges constituting an LSM tree have the same configuration, they tend to get compacted at approximately the same time. This entails IO load spikes, which, in turn, lead to deviation of the LSM tree from the target shape and hence increased read amplification. To prevent this from happening, this patch implements compaction randomization: with 10% probability we defer compaction at each LSM tree level, i.e. if the number of runs at a level exceeds the configured run_count_per_level, the level will be compacted with 90%-probability, but with 10% probability it won&#39;t - compaction will be deferred until another run is added to the level. Our simulations show that such a simple algorithm performs fairly well: it randomizes compaction pace among ranges, spreading IO load evenly in time, while the write amplification is increased by not more than 5-10%, which seems to be a reasonable price for elimination of IO load spikes. Closes #3944 (cherry picked from commit </a><a class="double-link" href="https://github.com/tarantool/tarantool/commit/<a class="double-link" href="https://github.com/tarantool/tarantool/commit/c9e7baedf4f478cd333087f08525c0a4ad29db82">c9e7baedf</a>">c9e7baedf</a><a href="https://github.com/tarantool/tarantool/commit/96532cdd130371aa5fde82f330fffcf63fbe5529">)
5 of 5 new or added lines in 2 files covered. (100.0%)
41154 of 50055 relevant lines covered (82.22%)
836232.72 hits per line