On 17/10/2017 06:12, Ming Lei wrote:
On Tue, Oct 17, 2017 at 01:04:16PM +0800, Ming Lei wrote:
Hi Jens,
The 1st patch runs idle hctx after dealy in scsi_mq_get_budget(),
so that we can keep same behaviour with before, and it can be
thought as a fix.
The 2nd patch cleans up RESTART, and removes handling for TAG_SHARED
from current blk-mq's RESTART mechanism because SCSI_MQ can covers its
restart by itself, so that no need to handle TAG_SHARED in blk-mq
RESTART. And >20% IOPS boost is observed in my rand read test over
scsi_debug.
John, please test this two patches and see if it may improve your SAS
IO performance, and you can find the two patches in the following branch:
https://github.com/ming1/linux/commits/blk_mq_improve_restart_V1
Hi Ming,
As requested, here's my figures for blk_mq_improve_restart_V1:
without default SCSI_MQ, deadline scheduler, CONFIG PREEMPT off
read, rw, write IOPS
989K, 113K/113K, 835K
with default SCSI_MQ, mq-deadline scheduler, CONFIG PREEMPT off
read, rw, write IOPS
738K, 130K/130K, 686K
For axboe for-next tip (21ed538):
without default SCSI_MQ, deadline scheduler, CONFIG PREEMPT off
read, rw, write IOPS
977K, 117K/117K, 821K
with default SCSI_MQ, mq-deadline scheduler, CONFIG PREEMPT off
read, rw, write IOPS
733K, 128K/128K, 676K
All cases do not have LLDD mq exposed/enabled. So unfortunately not much
difference with your branch.
cheers,
John
Forget to mention, you need to either pull the above branch directly
or apply the two patches against for-next branch of Jens' block
tree:
git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git #for-next