Re: [PATCH] ufs: Increase the usable queue depth
From: "Martin K. Petersen" <martin.petersen@oracle.com>
Date: 2021-05-15 03:14:23
On Thu, 13 May 2021 09:49:12 -0700, Bart Van Assche wrote:
With the current implementation of the UFS driver active_queues is 1 instead of 0 if all UFS request queues are idle. That causes hctx_may_queue() to divide the queue depth by 2 when queueing a request and hence reduces the usable queue depth. The shared tag set code in the block layer keeps track of the number of active request queues. blk_mq_tag_busy() is called before a request is queued onto a hwq and blk_mq_tag_idle() is called some time after the hwq became idle. blk_mq_tag_idle() is called from inside blk_mq_timeout_work(). Hence, blk_mq_tag_idle() is only called if a timer is associated with each request that is submitted to a request queue that shares a tag set with another request queue. Hence this patch that adds a blk_mq_start_request() call in ufshcd_exec_dev_cmd(). This patch doubles the queue depth on my test setup from 16 to 32. [...]
Applied to 5.13/scsi-fixes, thanks!
[1/1] ufs: Increase the usable queue depth
https://git.kernel.org/mkp/scsi/c/d0b2b70eb12e
--
Martin K. Petersen Oracle Linux Engineering