> Il giorno 27 nov 2021, alle ore 11:11, Yu Kuai <yukuai3@xxxxxxxxxx> ha scritto: > > Bfq can't handle sync io concurrently as long as the io are not issued > from root group currently. > > Previous patch set: > https://lore.kernel.org/lkml/20211014014556.3597008-2-yukuai3@xxxxxxxxxx/t/ > > During implemting the method mentioned by the above patch set, I found > more problems that will block implemting concurrent sync io. The > modifications of this patch set are as follows: > > 1) count root group into 'num_groups_with_pending_reqs'; > 2) don't idle if 'num_groups_with_pending_reqs' is 1; > 3) If the group doesn't have pending requests while it's child groups > have pending requests, don't count the group. Why don't yo count the parent group? It seems to me that we should count it. > 4) Once the group doesn't have pending requests, decrease > 'num_groups_with_pending_reqs' immediately. Don't delay to when all > it's child groups don't have pending requests. > I guess this action is related to 3). Thanks, Paolo > Noted that I just tested basic functionality of this patchset, and I > think it's better to see if anyone have suggestions or better > solutions. > > Yu Kuai (9): > block, bfq: add new apis to iterate bfq entities > block, bfq: apply news apis where root group is not expected > block, bfq: handle the case when for_each_entity() access root group > block, bfq: count root group into 'num_groups_with_pending_reqs' > block, bfq: do not idle if only one cgroup is activated > block, bfq: only count group that the bfq_queue belongs to > block, bfq: record how many queues have pending requests in bfq_group > block, bfq: move forward __bfq_weights_tree_remove() > block, bfq: decrease 'num_groups_with_pending_reqs' earlier > > block/bfq-cgroup.c | 3 +- > block/bfq-iosched.c | 92 +++++++++++++++++++++++---------------------- > block/bfq-iosched.h | 41 +++++++++++++------- > block/bfq-wf2q.c | 44 +++++++++++++++------- > 4 files changed, 106 insertions(+), 74 deletions(-) > > -- > 2.31.1 >