On 12/9/24 7:55 PM, Yu Kuai wrote:
From: Yu Kuai <yukuai3@xxxxxxxxxx> This reverts commit 39823b47bbd40502632ffba90ebb34fff7c8b5e8. Because tag reservation is not fixed and will introduce performance problem.
As explained in detail in the patch description and in the comments added by that patch, commit 39823b47bbd4 ("block/mq-deadline: Fix the tag reservation code") fixes broken code. So reverting that commit is wrong. I think that patches 1/3 and 3/3 of this series should be combined into a single patch.
1) Set min_shallow_depth to 1 will end up setting wake_batch to 1, deadline has no reason to do this. And this will cause performance degradation in some high concurrency test, for both IO bandwidth and cpu usage.
As explained in the commit message, this is done because min_shallow_depth must be less than or equal to shallow_depth. Additionally, mq-deadline is not the only I/O scheduler that sets min_shallow_depth to 1. BFQ does this too.
2) async_depth is nr_requests, hence shallow_depth will always set to 1 << bt->sb.shift. For consequence, no tag can be reserved.
This is not correct. dd->async_depth can be modified via sysfs. Bart.