On 3/29/22 7:18 PM, yukuai (C) wrote: > On 2022/03/29 20:44, Jens Axboe wrote: >> On 3/29/22 3:40 AM, Yu Kuai wrote: >>> Tag preemption is the default behaviour, specifically blk_mq_get_tag() >>> will try to get tag unconditionally, which means a new io can preempt tag >>> even if there are lots of ios that are waiting for tags. >>> >>> This patch introduce a new flag, prepare to disable such behaviour, in >>> order to optimize io performance for large random io for HHD. >> >> Not sure why we need a flag for this behavior. Does it ever make sense >> to allow preempting waiters, jumping the queue? >> > > Hi, > > I was thinking using the flag to control the new behavior, in order to > reduce the impact on general path. > > If wake up path is handled properly, I think it's ok to disable > preempting tags. If we hit tag starvation, we are by definition out of the fast path. That doesn't mean that scalability should drop to the floor, something that often happened before blk-mq and without the rolling wakeups. But it does mean that we can throw a bit more smarts at it, if it improves fairness/performance in that situation. -- Jens Axboe