From: Vladimir Davydov <vdavydov.dev@gmail.com> To: kostja@tarantool.org Cc: tarantool-patches@freelists.org Subject: Re: [PATCH v2 02/11] vinyl: factor load regulator out of quota Date: Mon, 1 Oct 2018 13:31:51 +0300 [thread overview] Message-ID: <20181001103151.rdlqflcn7sp7vxky@esperanza> (raw) In-Reply-To: <d4e75f2aa725f02934737ebadd609c7125e3f5fb.1538155645.git.vdavydov.dev@gmail.com> On Fri, Sep 28, 2018 at 08:40:00PM +0300, Vladimir Davydov wrote: > +static void > +vy_regulator_update_write_rate(struct vy_regulator *regulator) > +{ > + size_t used_curr = regulator->quota->used; > + size_t used_last = regulator->used_last; > + > + /* > + * Memory can be dumped between two subsequent timer > + * callback invocations, in which case memory usage > + * will decrease. Ignore such observations - it's not > + * a big deal, because dump is a rare event. > + */ > + if (used_curr < used_last) > + return; There's a bug here: we must update regulator->used_last in this case, otherwise we may stop updating the rate at all if used_last happens to be close to the limit. The fix is below. I updated the commit on the branch. > + > + size_t rate_avg = regulator->write_rate; > + size_t rate_curr = (used_curr - used_last) / VY_REGULATOR_TIMER_PERIOD; > + > + double weight = 1 - exp(-VY_REGULATOR_TIMER_PERIOD / > + VY_WRITE_RATE_AVG_WIN); > + rate_avg = (1 - weight) * rate_avg + weight * rate_curr; > + > + regulator->write_rate = rate_avg; > + regulator->used_last = used_curr; > +} diff --git a/src/box/vy_regulator.c b/src/box/vy_regulator.c index da35cc74..0d633abe 100644 --- a/src/box/vy_regulator.c +++ b/src/box/vy_regulator.c @@ -108,8 +108,10 @@ vy_regulator_update_write_rate(struct vy_regulator *regulator) * will decrease. Ignore such observations - it's not * a big deal, because dump is a rare event. */ - if (used_curr < used_last) + if (used_curr < used_last) { + regulator->used_last = used_curr; return; + } size_t rate_avg = regulator->write_rate; size_t rate_curr = (used_curr - used_last) / VY_REGULATOR_TIMER_PERIOD;
next prev parent reply other threads:[~2018-10-01 10:31 UTC|newest] Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-09-28 17:39 [PATCH v2 00/11] vinyl: transaction throttling infrastructure Vladimir Davydov 2018-09-28 17:39 ` [PATCH v2 01/11] vinyl: add helper to start scheduler and enable quota on startup Vladimir Davydov 2018-09-29 4:37 ` [tarantool-patches] " Konstantin Osipov 2018-09-28 17:40 ` [PATCH v2 02/11] vinyl: factor load regulator out of quota Vladimir Davydov 2018-09-29 5:00 ` [tarantool-patches] " Konstantin Osipov 2018-09-29 11:36 ` Vladimir Davydov [not found] ` <20180929114308.GA19162@chai> 2018-10-01 10:27 ` Vladimir Davydov 2018-10-01 10:31 ` Vladimir Davydov [this message] 2018-10-02 18:16 ` Konstantin Osipov 2018-10-03 8:49 ` Vladimir Davydov 2018-09-28 17:40 ` [PATCH v2 03/11] vinyl: minor refactoring of quota methods Vladimir Davydov 2018-09-29 5:01 ` [tarantool-patches] " Konstantin Osipov 2018-09-28 17:40 ` [PATCH v2 04/11] vinyl: move transaction size sanity check to quota Vladimir Davydov 2018-09-29 5:02 ` [tarantool-patches] " Konstantin Osipov 2018-09-28 17:40 ` [PATCH v2 05/11] vinyl: implement quota wait queue without fiber_cond Vladimir Davydov 2018-09-29 5:05 ` [tarantool-patches] " Konstantin Osipov 2018-09-29 11:44 ` Vladimir Davydov 2018-09-28 17:40 ` [PATCH v2 06/11] vinyl: enable quota upon recovery completion explicitly Vladimir Davydov 2018-09-29 5:06 ` [tarantool-patches] " Konstantin Osipov 2018-09-28 17:40 ` [PATCH v2 07/11] vinyl: zap vy_env::memory, read_threads, and write_threads Vladimir Davydov 2018-09-29 5:06 ` [tarantool-patches] " Konstantin Osipov 2018-09-28 17:40 ` [PATCH v2 08/11] vinyl: do not try to trigger dump in regulator if already in progress Vladimir Davydov 2018-09-28 17:40 ` [PATCH v2 09/11] vinyl: do not account zero dump bandwidth Vladimir Davydov 2018-10-12 13:27 ` Vladimir Davydov 2018-10-16 18:25 ` [tarantool-patches] " Konstantin Osipov 2018-10-17 8:44 ` Vladimir Davydov 2018-10-23 7:02 ` Konstantin Osipov 2018-09-28 17:40 ` [PATCH v2 10/11] vinyl: implement basic transaction throttling Vladimir Davydov 2018-09-28 17:40 ` [PATCH v2 11/11] vinyl: introduce quota consumer priorities Vladimir Davydov 2018-10-06 13:24 ` Konstantin Osipov 2018-10-08 11:10 ` Vladimir Davydov 2018-10-09 13:25 ` Vladimir Davydov 2018-10-11 7:02 ` Konstantin Osipov 2018-10-11 8:29 ` Vladimir Davydov 2018-10-03 9:06 ` [PATCH v2 00/11] vinyl: transaction throttling infrastructure 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=20181001103151.rdlqflcn7sp7vxky@esperanza \ --to=vdavydov.dev@gmail.com \ --cc=kostja@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [PATCH v2 02/11] vinyl: factor load regulator out of quota' \ /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