Message ID | 20200801170021.76756-1-zhouchengming@bytedance.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | iocost: Only inc nr_shortages when have io waited | expand |
On Sun, Aug 02, 2020 at 01:00:21AM +0800, Chengming Zhou wrote: > The last else branch of current code may have not io waited in iocg, > in which case we should not inc nr_shortages, or the device vrate > will speed up even this iocg is not shortage of vtime. > > Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com> > --- > block/blk-iocost.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/block/blk-iocost.c b/block/blk-iocost.c > index 86ba6fd254e1..ce68b5749364 100644 > --- a/block/blk-iocost.c > +++ b/block/blk-iocost.c > @@ -1485,7 +1485,7 @@ static void ioc_timer_fn(struct timer_list *timer) > __propagate_active_weight(iocg, iocg->weight, > new_inuse); > } > - } else { > + } else if (waitqueue_active(&iocg->waitq)) { This is intentional. Shortage doesn't necessarily mean that there are waiters right now. If there are cgroups which don't have enough headroom to donate and the device is hitting the latency targets, it makes sense to ramp up vrate as those cgroups are likely to get throttled. Thanks.
diff --git a/block/blk-iocost.c b/block/blk-iocost.c index 86ba6fd254e1..ce68b5749364 100644 --- a/block/blk-iocost.c +++ b/block/blk-iocost.c @@ -1485,7 +1485,7 @@ static void ioc_timer_fn(struct timer_list *timer) __propagate_active_weight(iocg, iocg->weight, new_inuse); } - } else { + } else if (waitqueue_active(&iocg->waitq)) { /* genuninely out of vtime */ nr_shortages++; }
The last else branch of current code may have not io waited in iocg, in which case we should not inc nr_shortages, or the device vrate will speed up even this iocg is not shortage of vtime. Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com> --- block/blk-iocost.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)