linux/drivers/scsi/mpt3sas
Suganath Prabu 1edc677019 scsi: mpt3sas: Reduce the performance drop
This patch is to reduce the performance drop depth observed on SATA HDD
when ATA PT command is outstanding.

Driver returns IO commands with status "SAM_STAT_BUSY" whenever ATA PT
command is outstanding. With this, IO commands will be retried until this
outstanding ATA PT to complete and hence we will observe drop in
performance.

As the driver is completing the subsequent IOs commands with SAM_STAT_BUSY
status, these IOs has to go though the block layer.  Hence it adds latency
to the IOs and large performance drop is observed.

So to reduce this performance dropp, added improvement in driver to return
the subsequent IOs with SCSI_MLQUEUE_DEVICE_BUSY status instead of
completing the IOs with SAM_STAT_BUSY status when ATA PT command is
outstanding. Sending command back with SCSI_MLQUEUE_DEVICE_BUSY does not go
through complete block layer stack (as scsi_done won't be called) SML will
immediately retry the command and this method will avoid latency of block
layer stack and the performance impact will be reduced.

On Local setup, ran 512k sequential read IO operation on HGST SATA drive
with existing driver & with this improvement drivers and here is the
result,

1. With existing driver: IOs are running at bandwidth of ~230 rMB/s and
whenever any ATA PT command is outstanding (e.g issued from systemd-udevd
daemon) then this bandwidth drops to ~150 rMB/s.

2. With this improvement driver: IOs are running at bandwidth of ~230 rMB/s
and whenever any ATA PT command is outstanding then this bandwidth drops to
just ~190 rMB/s.

Signed-off-by: Suganath Prabu <suganath-prabu.subramani@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-08-07 22:46:51 -04:00
..
mpi scsi: mpt3sas: Update MPI headers to 2.6.8 spec 2019-08-07 22:46:19 -04:00
Kconfig scsi: mpt3sas: Irq poll to avoid CPU hard lockups 2019-03-18 17:16:43 -04:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mpt3sas_base.c scsi: mpt3sas: Handle fault during HBA initialization 2019-08-07 22:46:51 -04:00
mpt3sas_base.h scsi: mpt3sas: Add sysfs to know supported features 2019-08-07 22:46:51 -04:00
mpt3sas_config.c scsi: mpt3sas: Enable interrupt coalescing on high iops 2019-06-18 19:46:26 -04:00
mpt3sas_ctl.c scsi: mpt3sas: Add sysfs to know supported features 2019-08-07 22:46:51 -04:00
mpt3sas_ctl.h scsi: mpt3sas: Increase event log buffer to support 24 port HBA's. 2018-05-08 00:34:20 -04:00
mpt3sas_debug.h mpt2sas, mpt3sas: Remove SCSI_MPTXSAS_LOGGING entry from Kconfig 2015-11-11 18:31:14 -05:00
mpt3sas_scsih.c scsi: mpt3sas: Reduce the performance drop 2019-08-07 22:46:51 -04:00
mpt3sas_transport.c scsi: mpt3sas: function pointers of request descriptor 2019-06-18 19:46:25 -04:00
mpt3sas_trigger_diag.c scsi: mpt3sas: Convert uses of pr_<level> with MPT3SAS_FMT to ioc_<level> 2018-10-10 22:00:43 -04:00
mpt3sas_trigger_diag.h
mpt3sas_warpdrive.c scsi: mpt3sas: Convert uses of pr_<level> with MPT3SAS_FMT to ioc_<level> 2018-10-10 22:00:43 -04:00