Re: [PATCH RFT 0/3] blk-mq: Optimise blk_mq_queue_tag_busy_iter() for shared tags

From: John Garry
Date: Fri Nov 26 2021 - 06:53:40 EST


On 26/11/2021 11:25, Kashyap Desai wrote:

I will continue testing and let you know how it goes.
ok, good to know, thanks. But I would still like to know what is
triggering
blk_mq_queue_tag_busy_iter() so often. Indeed, as mentioned in this cover
letter, this function was hardly optimised before for shared sbitmap.
If I give "--disk_util=0" option in my fio run, caller of "
blk_mq_queue_tag_busy_iter" reduced drastically.
As part of <fio> run, application call diskutils operations and it is almost
same as doing "cat /proc/stats" in loop.
Looking at fio code, it call diskstats every 250 msec. Here is sample fio
logs -

diskutil 87720 /sys/block/sdb/stat: stat read ok? 0
diskutil 87720 update io ticks
diskutil 87720 open stat file: /sys/block/sdb/stat
diskutil 87720 /sys/block/sdb/stat: 127853173 0 1022829056 241827073
0 0 0 0 255 984012 241827073 0 0
0 0 0 0

There is one more call trace, but not sure why it is getting executed in my
test. Below path does not execute so frequently but it consumes cpu (not
noticeable on my setup)

kthread
worker_thread
process_one_work
blk_mq_timeout_work
blk_mq_queue_tag_busy_iter
bt_iter
blk_mq_find_and_get_req
_raw_spin_lock_irqsave
native_queued_spin_lock_slowpath



It would be still nice to know where this is coming from.

This patch set improves above call trace even after disk_util=0 is set.
ok, fine. Thanks for testing.

So I guess that this is a regression, and you would want this series for v5.16, right? My changes were made with v5.17 in mind.

I am not sure how Jens feels about it, since the changes are significant. It would be a lot easier to argue for v5.16 if we got to this point earlier in the cycle...

Anyway, it would be good to have full review first, so please help with that.

@Ming, can you please give feedback on 3/3 here?

BTW, I am on vacation next week and can't help progress then, so any assistance would be good.

Thanks,
John