Message ID | 20231130193139.880955-1-bvanassche@acm.org (mailing list archive) |
---|---|
Headers | show |
Series | Disable fair tag sharing for UFS devices | expand |
On Thu, Nov 30, 2023 at 11:31:27AM -0800, Bart Van Assche wrote: > Hi Jens, > > The fair tag sharing algorithm reduces performance for UFS devices > significantly. This is because UFS devices have multiple logical units, a > limited queue depth (32 for UFS 3.1 devices), because it happens often that > multiple logical units are accessed and also because it takes time to > give tags back after activity on a request queue has stopped. This patch series > restores UFS device performance to that of the legacy block layer by disabling > fair tag sharing for UFS devices. I feel like a broken record: fair tag sharing exists for a reason. Opting out of it for a specific driver does not make any sense. Either you can make a good argument why you don't want it at all, or for specific configurations you can clearly explain, or you make it work faster. A "treat my driver special" flag is never acceptable.
On 12/3/23 23:52, Christoph Hellwig wrote: > On Thu, Nov 30, 2023 at 11:31:27AM -0800, Bart Van Assche wrote: >> The fair tag sharing algorithm reduces performance for UFS devices >> significantly. This is because UFS devices have multiple logical units, a >> limited queue depth (32 for UFS 3.1 devices), because it happens often that >> multiple logical units are accessed and also because it takes time to >> give tags back after activity on a request queue has stopped. This patch series >> restores UFS device performance to that of the legacy block layer by disabling >> fair tag sharing for UFS devices. > > I feel like a broken record: > > fair tag sharing exists for a reason. Opting out of it for a specific > driver does not make any sense. Either you can make a good argument > why you don't want it at all, or for specific configurations you > can clearly explain, or you make it work faster. A "treat my driver > special" flag is never acceptable. Hi Christoph, Feedback that helps improving a patch series is always welcome. Here is how I see fair tag sharing: * Users probably want to configure minimum and maximum bandwidth or IOPS values instead of an equal number of tags per request queue. I assume that the fair tag sharing algorithm assigns an equal number of tags to each request queue since the run-time cost of the latter algorithm is much lower than the run-time cost of the previous algorithms. * Any algorithm that is more sophisticated than the current fair tag sharing algorithm would have a higher runtime cost. We don't want to increase the cost of command processing in the block layer core. Hence my proposal to disable the fair tag sharing algorithm if it's not needed. I don't see a good alternative to this approach. Thanks, Bart.