Hi,
在 2024/04/22 11:33, 周泰宇 写道:
/* throtl is FIFO - if bios are already queued, should queue */
- if (sq->nr_queued[rw])
+ if (sq->nr_queued[rw] && !bio_flagged(bio, BIO_BPS_THROTTLED))
No, this change is wrong. Split IO will not be throttled by iops limit
anymore.
After this change, the split IO will be throttled by iops limit again if it reaches a tg's iops limit and will not be throttled in any cases if the sq->queue is not empty.
Forgot to reply here,
The ponit here is that you break the rules about FIFO, blk-throttle
only judge the bio from head if it's within limit. Current code to judge
if tg iops reaches limit on the condition that no bio is throttled. And
throtl time is always caculated by first throttled bio. But this patch
will ignore throttled bio case, and that's why I said IO will not be
throttled by iops limist anymore. You can test this with bps limit
disabled.
Thanks,
Kuai