Tarantool development patches archive
 help / color / mirror / Atom feed
* [PATCH 0/9] vinyl: compaction randomization and throttling
@ 2019-01-20 21:16 Vladimir Davydov
  2019-01-20 21:17 ` [PATCH 1/9] vinyl: update lsm->range_heap in one go on dump completion Vladimir Davydov
                   ` (8 more replies)
  0 siblings, 9 replies; 39+ messages in thread
From: Vladimir Davydov @ 2019-01-20 21:16 UTC (permalink / raw)
  To: tarantool-patches

This patch set achieves two goals. The first one is randomizing
compaction pace among ranges so as to avoid IO load bursts, which badly
affect read and space amplification and complicate implementation of
transaction throttling. The second goal is making sure that compaction
always keeps up with dumps and throttling transactions if it doesn't.
For more details, see comments to the individual patches and the GitHub
issues.

https://github.com/tarantool/tarantool/issues/3944
https://github.com/tarantool/tarantool/issues/3721
https://github.com/tarantool/tarantool/commits/dv/gh-3721-3944-vy-compaction-randomization-and-throttling

Vladimir Davydov (9):
  vinyl: update lsm->range_heap in one go on dump completion
  vinyl: ignore unknown .run, .index and .vylog keys
  vinyl: use uncompressed run size for range split/coalesce/compaction
  vinyl: rename lsm->range_heap to max_compaction_priority
  vinyl: keep track of dumps per compaction for each LSM tree
  vinyl: set range size automatically
  vinyl: randomize range compaction to avoid IO load spikes
  vinyl: introduce quota consumer types
  vinyl: throttle tx to ensure compaction keeps up with dumps

 src/box/alter.cc                   |   8 +-
 src/box/box.cc                     |   6 +-
 src/box/index_def.c                |   2 +-
 src/box/lua/load_cfg.lua           |   2 +-
 src/box/lua/space.cc               |   6 +-
 src/box/vinyl.c                    |  39 +++++--
 src/box/vy_log.c                   |  33 ++++--
 src/box/vy_log.h                   |  10 +-
 src/box/vy_lsm.c                   |  83 ++++++++++++--
 src/box/vy_lsm.h                   |  12 +-
 src/box/vy_quota.c                 | 132 +++++++++++++++++-----
 src/box/vy_quota.h                 |  97 ++++++++++++++---
 src/box/vy_range.c                 |  55 ++++++++--
 src/box/vy_range.h                 |  60 +++++++---
 src/box/vy_regulator.c             |  96 ++++++++++++++--
 src/box/vy_regulator.h             |  27 +++++
 src/box/vy_run.c                   |  13 +--
 src/box/vy_run.h                   |  20 ++++
 src/box/vy_scheduler.c             |  40 ++++---
 test/app-tap/init_script.result    |  21 ++--
 test/box-tap/cfg.test.lua          |   3 +-
 test/box/admin.result              |   2 -
 test/box/cfg.result                |   4 -
 test/vinyl/ddl.result              |   5 -
 test/vinyl/ddl.test.lua            |   1 -
 test/vinyl/layout.result           |   8 +-
 test/vinyl/misc.result             |  78 +++++++++++++
 test/vinyl/misc.test.lua           |  26 +++++
 test/vinyl/stat.result             | 217 +++++++++++++++++++++++++++++--------
 test/vinyl/stat.test.lua           |  57 ++++++++++
 test/vinyl/write_iterator.result   |  16 +++
 test/vinyl/write_iterator.test.lua |   6 +
 32 files changed, 962 insertions(+), 223 deletions(-)

-- 
2.11.0

^ permalink raw reply	[flat|nested] 39+ messages in thread

end of thread, other threads:[~2019-02-06 17:04 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-20 21:16 [PATCH 0/9] vinyl: compaction randomization and throttling Vladimir Davydov
2019-01-20 21:17 ` [PATCH 1/9] vinyl: update lsm->range_heap in one go on dump completion Vladimir Davydov
2019-01-24 16:55   ` Vladimir Davydov
2019-02-05 16:37   ` [tarantool-patches] " Konstantin Osipov
2019-01-20 21:17 ` [PATCH 2/9] vinyl: ignore unknown .run, .index and .vylog keys Vladimir Davydov
2019-01-24 16:56   ` Vladimir Davydov
2019-01-20 21:17 ` [PATCH 3/9] vinyl: use uncompressed run size for range split/coalesce/compaction Vladimir Davydov
2019-01-21  9:42   ` Vladimir Davydov
2019-02-05 16:49     ` [tarantool-patches] " Konstantin Osipov
2019-02-06  8:55       ` Vladimir Davydov
2019-02-06 10:46         ` Konstantin Osipov
2019-02-06 10:55           ` Vladimir Davydov
2019-02-05 16:43   ` Konstantin Osipov
2019-02-06 16:48     ` Vladimir Davydov
2019-01-20 21:17 ` [PATCH 4/9] vinyl: rename lsm->range_heap to max_compaction_priority Vladimir Davydov
2019-01-20 21:17 ` [PATCH 5/9] vinyl: keep track of dumps per compaction for each LSM tree Vladimir Davydov
2019-02-05 16:58   ` [tarantool-patches] " Konstantin Osipov
2019-02-06  9:20     ` Vladimir Davydov
2019-02-06 16:54       ` Vladimir Davydov
2019-01-20 21:17 ` [PATCH 6/9] vinyl: set range size automatically Vladimir Davydov
2019-01-22  9:17   ` Vladimir Davydov
2019-02-05 17:09   ` [tarantool-patches] " Konstantin Osipov
2019-02-06  9:23     ` Vladimir Davydov
2019-02-06 17:04       ` Vladimir Davydov
2019-01-20 21:17 ` [PATCH 7/9] vinyl: randomize range compaction to avoid IO load spikes Vladimir Davydov
2019-01-22 12:54   ` Vladimir Davydov
2019-02-05 17:39     ` [tarantool-patches] " Konstantin Osipov
2019-02-06  8:53       ` Vladimir Davydov
2019-02-06 10:44         ` Konstantin Osipov
2019-02-06 10:52           ` Vladimir Davydov
2019-02-06 11:06             ` Konstantin Osipov
2019-02-06 11:49               ` Vladimir Davydov
2019-02-06 13:43                 ` Konstantin Osipov
2019-02-06 14:00                   ` Vladimir Davydov
2019-02-05 17:14   ` Konstantin Osipov
2019-01-20 21:17 ` [PATCH 8/9] vinyl: introduce quota consumer types Vladimir Davydov
2019-01-20 21:17 ` [PATCH 9/9] vinyl: throttle tx to ensure compaction keeps up with dumps Vladimir Davydov
2019-01-21 14:14   ` Vladimir Davydov
2019-01-22  9:09   ` Vladimir Davydov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox