[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220519095857.GE16096@blackbody.suse.cz>
Date: Thu, 19 May 2022 11:58:58 +0200
From: Michal Koutný <mkoutny@...e.com>
To: Yu Kuai <yukuai3@...wei.com>
Cc: tj@...nel.org, axboe@...nel.dk, ming.lei@...hat.com,
geert@...ux-m68k.org, cgroups@...r.kernel.org,
linux-block@...r.kernel.org, linux-kernel@...r.kernel.org,
yi.zhang@...wei.com
Subject: Re: [PATCH -next v3 2/2] blk-throttle: fix io hung due to
configuration updates
Hello Kuayi.
On Thu, May 19, 2022 at 04:58:11PM +0800, Yu Kuai <yukuai3@...wei.com> wrote:
> If new configuration is submitted while a bio is throttled, then new
> waiting time is recaculated regardless that the bio might aready wait
> for some time:
>
> tg_conf_updated
> throtl_start_new_slice
> tg_update_disptime
> throtl_schedule_next_dispatch
>
> Then io hung can be triggered by always submmiting new configuration
> before the throttled bio is dispatched.
O.K.
> - /*
> - * We're already holding queue_lock and know @tg is valid. Let's
> - * apply the new config directly.
> - *
> - * Restart the slices for both READ and WRITES. It might happen
> - * that a group's limit are dropped suddenly and we don't want to
> - * account recently dispatched IO with new low rate.
> - */
> - throtl_start_new_slice(tg, READ);
> - throtl_start_new_slice(tg, WRITE);
> + throtl_update_slice(tg, old_limits);
throtl_start_new_slice zeroes *_disp fields.
If for instance, new config allowed only 0.5 throughput, the *_disp
fields would be scaled to 0.5.
How that change helps (better) the previously throttled bio to be dispatched?
(Is it because you omit update of slice_{start,end}?)
Thanks,
Michal
Powered by blists - more mailing lists