From: Vladimir Davydov <vdavydov.dev@gmail.com> To: kostja@tarantool.org Cc: tarantool-patches@freelists.org Subject: [PATCH v2 2/8] vinyl: update compact priority usual way on range split/coalesce Date: Sun, 16 Sep 2018 20:06:45 +0300 [thread overview] Message-ID: <8da96f62e4b6b8a75c91ce4007c1e10bc38fee5b.1537115208.git.vdavydov.dev@gmail.com> (raw) In-Reply-To: <cover.1537115208.git.vdavydov.dev@gmail.com> In-Reply-To: <cover.1537115208.git.vdavydov.dev@gmail.com> When a few ranges are coalesced, we "force" compaction of the resulting range by raising its compaction priority to max (slice count). There's actually no point in that, because as long as the shape of the resulting LSM tree is OK, we don't need to do extra compaction work. Moreover, it actually doesn't work if a new slice is added to the resulting range by dump before it gets compacted, which is fairly likely, because then its compaction priority will be recalculated as usual. So let's simply call vy_range_update_compact_priority() for the resulting range. When a range is split, the produced ranges will inherit its compaction priority. This is actually incorrect, because range split may change the shape of the tree so let's recalculate priority for each part the usual way, i.e. by calling vy_range_update_compact_priority(). After this patch, there's this only place where we can update compaction priority of a range - it's vy_range_update_compact_priority(). --- src/box/vy_lsm.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/box/vy_lsm.c b/src/box/vy_lsm.c index 71a44f63..a1d4aa80 100644 --- a/src/box/vy_lsm.c +++ b/src/box/vy_lsm.c @@ -1017,7 +1017,7 @@ vy_lsm_split_range(struct vy_lsm *lsm, struct vy_range *range) vy_range_add_slice(part, new_slice); } part->needs_compaction = range->needs_compaction; - part->compact_priority = range->compact_priority; + vy_range_update_compact_priority(part, &lsm->opts); } /* @@ -1129,13 +1129,7 @@ vy_lsm_coalesce_range(struct vy_lsm *lsm, struct vy_range *range) vy_range_delete(it); it = next; } - /* - * Coalescing increases read amplification and breaks the log - * structured layout of the run list, so, although we could - * leave the resulting range as it is, we'd better compact it - * as soon as we can. - */ - result->compact_priority = result->slice_count; + vy_range_update_compact_priority(result, &lsm->opts); vy_lsm_acct_range(lsm, result); vy_lsm_add_range(lsm, result); lsm->range_tree_version++; -- 2.11.0
next prev parent reply other threads:[~2018-09-16 17:06 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-09-16 17:06 [PATCH v2 0/8] vinyl: improve stats for throttling Vladimir Davydov 2018-09-16 17:06 ` [PATCH v2 1/8] vinyl: fix force compaction logic Vladimir Davydov 2018-09-19 1:43 ` Konstantin Osipov 2018-09-16 17:06 ` Vladimir Davydov [this message] 2018-09-19 1:46 ` [PATCH v2 2/8] vinyl: update compact priority usual way on range split/coalesce Konstantin Osipov 2018-09-16 17:06 ` [PATCH v2 3/8] vinyl: annotate info_table_end with comment Vladimir Davydov 2018-09-19 1:47 ` Konstantin Osipov 2018-09-16 17:06 ` [PATCH v2 4/8] vinyl: report pages and bytes_compressed in dump/compact in/out stats Vladimir Davydov 2018-09-19 1:48 ` Konstantin Osipov 2018-09-16 17:06 ` [PATCH v2 5/8] vinyl: add helpers for resetting statement counters Vladimir Davydov 2018-09-19 1:49 ` Konstantin Osipov 2018-09-16 17:06 ` [PATCH v2 6/8] vinyl: keep track of compaction queue length Vladimir Davydov 2018-09-19 1:53 ` Konstantin Osipov 2018-09-16 17:06 ` [PATCH v2 7/8] vinyl: factor out helpers for accounting dump/compaction Vladimir Davydov 2018-09-19 1:53 ` Konstantin Osipov 2018-09-16 17:06 ` [PATCH v2 8/8] vinyl: add global disk stats Vladimir Davydov 2018-09-19 1:56 ` Konstantin Osipov 2018-09-19 9:59 ` [PATCH v2 0/8] vinyl: improve stats for throttling Vladimir Davydov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=8da96f62e4b6b8a75c91ce4007c1e10bc38fee5b.1537115208.git.vdavydov.dev@gmail.com \ --to=vdavydov.dev@gmail.com \ --cc=kostja@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [PATCH v2 2/8] vinyl: update compact priority usual way on range split/coalesce' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox