On Tue, 2017-07-11 at 15:14 +0100, John Garry wrote: > On 11/07/2017 14:32, Bart Van Assche wrote: > > On Tue, 2017-07-11 at 11:22 +0100, John Garry wrote: > > > On 10/07/2017 16:50, Bart Van Assche wrote: > > > > Since a fix for the performance regression triggered by this patch will be upstream > > > > soon (see also https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/commit/?h=for-linus&id=32825c45ff8f4cce937ab85b030dc693ceb1aa0a): > > > > > > > > > > FYI, on linux-next 20170711 (which now includes the above patch Bart > > > mentioned) we see a large performance regression on hisi_sas (LLDD does > > > not config shost for mq). > > > > > > fio read mode iops goes from ~833K (scsi_mod.use_blk_mq=n on cmdline) to > > > ~320K > > > > Hello John, > > > > Thanks for the feedback. Is the kernel config with which these measurements > > were performed available somewhere? > > It is the default arm64 defconfig with the following changes: > CONFIG_ARM_SMMU_V3=n > CONFIG_9P_FS=n > > We were getting a compile error in the 9p fs code, so disabled it. > Turning on the IOMMU drops performance across the board for our > platform, so just disabling it for the test. Hello John, What block driver controls the block device for which the performance regression has been observed? How many hardware queues were created by that block driver (see also /sys/block/*/mq/...)? I'm asking this because the number of hardware queues controls which I/O scheduler is selected as default. From block/elevator.c: if (q->mq_ops) { if (q->nr_hw_queues == 1) e = elevator_get("mq-deadline", false); if (!e) return 0; } else e = elevator_get(CONFIG_DEFAULT_IOSCHED, false); Bart.