Re: [PATCH v2 2/4] block, bfq: do not idle if only one cgroup is activated

From: Paolo Valente
Date: Tue Sep 07 2021 - 05:10:21 EST




> Il giorno 2 set 2021, alle ore 15:31, yukuai (C) <yukuai3@xxxxxxxxxx> ha scritto:
>
> On 2021/08/27 1:00, Paolo Valente wrote:
>> Why do you make these extensive changes, while you can leave all the
>> function unchanged and just modify the above condition to something
>> like
>> || bfqd->num_groups_with_pending_reqs > 1
>> || (bfqd->num_groups_with_pending_reqs && bfqd->num_queues_with_pending_reqs_in_root)
>
> Hi, Paolo
>
> I was thinking that if CONFIG_BFQ_GROUP_IOSCHED is enabled, there is no
> need to caculate smallest_weight, varied_queue_weights, and
> multiple_classes_busy:
>
> If we count root group into num_groups_with_pending_reqs
> - If num_groups_with_pending_reqs <= 1, idle is not needed

Unfortunately, if active queues have different weights or belong to
different classes, then idling is needed to preserve per-queue
bandwidths.

Thanks,
Paolo

> - If num_groups_with_pending_reqs > 1, idle is needed
>
> Thus such changes can save some additional overhead.
>
> Thanks
> Yu Kuai
>
>> In addition, I still wonder whether you can simply add also the root
>> group to bfqd->num_groups_with_pending_reqs (when the root group is
>> active). This would make the design much cleaner.
>> Thanks,
>> Paolo
>>> -#endif
>>> - ;
>>> + return varied_queue_weights || multiple_classes_busy;
>>> }
>>>
>>> /*
>>> --
>>> 2.31.1
>>>
>> .