On Mon 25-04-22 21:55:46, yukuai (C) wrote: > 在 2022/04/25 21:34, yukuai (C) 写道: > > 在 2022/04/25 17:48, Jan Kara 写道: > > > On Sat 16-04-22 17:37:50, Yu Kuai wrote: > > > > Weight-raised queue is not inserted to weights_tree, which makes it > > > > impossible to track how many queues have pending requests through > > > > weights_tree insertion and removel. This patch add fake weight_counter > > > > for weight-raised queue to do that. > > > > > > > > Signed-off-by: Yu Kuai <yukuai3@xxxxxxxxxx> > > > > > > This is a bit hacky. I was looking into a better place where to hook to > > > count entities in a bfq_group with requests and I think > > > bfq_add_bfqq_busy() > > > and bfq_del_bfqq_busy() are ideal for this. It also makes better sense > > > conceptually than hooking into weights tree handling. > > > > > Hi, > > > > bfq_del_bfqq_busy() will be called when all the reqs in the bfqq are > > dispatched, however there might still some reqs are't completed yet. > > > > Here what we want to track is how many bfqqs have pending reqs, > > specifically if the bfqq have reqs are't complted. > > > > Thus I think bfq_del_bfqq_busy() is not the right place to do that. > > BTW, there is a counter 'dispatched' in bfqq, how about we rename it > to 'inflight', and inc when adding req to bfqq, dec the same as > 'dispatched' ? > > This way we can count bfqq when adding 'inflight' from 0 to 1, and > stop when decreasing 'inflight' from 1 to 0. Well, but 'dispatched' is used in quite a few places and it would require quite some thinking to decide which impact using 'inflight' has there... But we also have 'bfqq->entity.allocated' which is number of requests in some state associated with bfqq and we could use that. But as I wrote in my previous email, I'm not convinced it is really necessary... Honza -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR