Re: [PATCH v2 02/10] blk-throttle: Fix that bps of child could exceed bps limited in parent

From: Tejun Heo
Date: Wed Nov 30 2022 - 16:09:30 EST


On Tue, Nov 29, 2022 at 11:01:39AM +0800, Kemeng Shi wrote:
> Consider situation as following (on the default hierarchy):
> HDD
> |
> root (bps limit: 4k)
> |
> child (bps limit :8k)
> |
> fio bs=8k
> Rate of fio is supposed to be 4k, but result is 8k. Reason is as
> following:
> Size of single IO from fio is larger than bytes allowed in one
> throtl_slice in child, so IOs are always queued in child group first.
> When queued IOs in child are dispatched to parent group, BIO_BPS_THROTTLED
> is set and these IOs will not be limited by tg_within_bps_limit anymore.
> Fix this by only set BIO_BPS_THROTTLED when the bio traversed the entire
> tree.
>
> There patch has no influence on situation which is not on the default
> hierarchy as each group is a single root group without parent.
>
> Signed-off-by: Kemeng Shi <shikemeng@xxxxxxxxxx>

Acked-by: Tejun Heo <tj@xxxxxxxxxx>

--
tejun