On 12/9/24 10:22 PM, Yu Kuai wrote:
First of all, are we in the agreement that it's not acceptable to sacrifice performance in the default scenario just to make sure functional correctness if async_depth is set to 1?
How much does this affect performance? If this affects performance significantly I agree that this needs to be fixed.
If so, following are the options that I can think of to fix this: 1) make async_depth read-only, if 75% tags will hurt performance in some cases, user can increase nr_requests to prevent it. 2) refactor elevator sysfs api, remove eq->sysfs_lock and replace it with q->sysfs_lock, so deadline_async_depth_store() will be protected against changing hctxs, and min_shallow_depth can be updated here. 3) other options?
Another option is to remove the ability to configure async_depth. If it is too much trouble to get the implementation right without causing regressions for existing workloads, one possibility is to remove support for restricting the number of asynchronous requests in flight. Thanks, Bart.