Re: [V2, 2/2] scsi: avoid to hold host-wide counter of host_busy for scsi_mq
From: Ming Lei <hidden>
Date: 2018-06-30 01:30:47
On Fri, Jun 29, 2018 at 09:20:54AM -0700, Guenter Roeck wrote:
Hi, On Sun, Jun 24, 2018 at 10:03:27PM +0800, Ming Lei wrote:quoted
It isn't necessary to check the host depth in scsi_queue_rq() any more since it has been respected by blk-mq before calling scsi_queue_rq() via getting driver tag. Lots of LUNs may attach to same host, and per-host IOPS may reach millions level, so we should avoid to this expensive atomic operations on the hostwide counter in IO path. This patch implemens scsi_host_busy() via blk_mq_tagset_busy_iter() for reading the count of busy IOs for scsi_mq. It is observed that IOPS is increased by 15% in IO test on scsi_debug (32 LUNs, 32 submit queues, 1024 can_queue, libaio/dio) in one dual-socket system.This patch breaks two of my qemu test builds in -next: parisc:defconfig and arm:versatilepb-scsi:versatile_defconfig (which is versatilepb booting from scsi disk). The symptom is the same for both: Boot stalls after scsi bus initialization. arm: sym53c8xx 0000:00:0c.0: enabling device (0100 -> 0103) sym0: <895a> rev 0x0 at pci 0000:00:0c.0 irq 66 sym0: No NVRAM, ID 7, Fast-40, LVD, parity checking sym0: SCSI BUS has been reset. scsi host0: sym-2.2.3 random: fast init done [stalls] parisc: sym53c8xx 0000:00:00.0: enabling SERR and PARITY (0107 -> 0147) sym0: <895a> rev 0x0 at pci 0000:00:00.0 irq 17 sym0: PA-RISC Firmware, ID 7, Fast-40, LVD, parity checking sym0: SCSI BUS has been reset. scsi host0: sym-2.2.3 random: fast init done [stalls] Reverting the patch fixes the problem. Bisect log is attached.
Please test the patch of 'scsi: fix scsi_host_queue_ready', which has been posted on linux-scsi list and CCed to you. Thanks, Ming