> Il giorno 31 lug 2021, alle ore 09:10, yukuai (C) <yukuai3@xxxxxxxxxx> ha scritto: > > On 2021/07/24 15:12, Paolo Valente wrote: >>> Il giorno 14 lug 2021, alle ore 11:45, Yu Kuai <yukuai3@xxxxxxxxxx> ha scritto: >>> >>> If only one group is activated, specifically >>> 'bfqd->num_groups_with_pending_reqs == 1', there is no need to guarantee >>> the same share of the throughput of queues in the same group. >>> >>> Thus change the condition from '> 0' to '> 1' in >>> bfq_asymmetric_scenario(). >> I see your point, and I agree with your goal. Yet, your change seems >> not to suffer from the following problem. >> In addition to the groups that are created explicitly, there is the >> implicit root group. So, when bfqd->num_groups_with_pending_reqs == >> 1, there may be both active processes in the root group and active >> processes in the only group created explicitly. In this case, idling >> is needed to preserve service guarantees. >> Probably your idea should be improved by making sure that there is >> pending I/O only from either the root group or the explicit group. >> Thanks, >> Paolo > > > Hi, Paolo > Hi > I'm trying to add support to judge if root group have pending rqs, the > implementation involve setting and clearing the busy state. > I wouldn't use the busy state, as it does not take in-flight requests into account. For I/O control, the latter are as important as the ones still queued in the scheduler. For this reason, I take in-flight requests into account when counting bfqd->num_groups_with_pending_reqs. See, e.g., this if (!bfqq->dispatched && !bfq_bfqq_busy(bfqq)) { ... bfq_weights_tree_remove(bfqd, bfqq); } in bfq_completed_request. I would replicate the same logic in deciding whether the root group has pending I/O. > I'm thinking about setting busy in __bfq_activate_entity() if > bfq_entity_to_bfqq() return valid bfqq, however I'm not sure where to > clear the busy state. > > On the other hand, do you think the way I record rq size info in patch 2 > is OK? First, let's see what you reply to my suggestion above. Thanks, Paolo > If so, I can do this the similar way: say that root group doesn't > have any pending requests if bfq haven't dispatch rq from root group for > a period of time. > > Thanks > Kuai