OSDN Git Service

scsi: efct: Decrease area under spinlock
authorDmitry Bogdanov <d.bogdanov@yadro.com>
Tue, 14 Sep 2021 10:55:39 +0000 (13:55 +0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 22 Sep 2021 04:04:56 +0000 (00:04 -0400)
commite76b7c5e25a1fa818bb3e727873a899cc89f5196
tree4b5faf223d55af02c8bc96c973dee6bccdb2763e
parentee3dce9f38426776b48406441d0dc39c74940818
scsi: efct: Decrease area under spinlock

Under the session level spinlock node->active_ios_lock in
efct_scsi_io_alloc() we are taking another spinlock for the port.  This
leads to contention between sessions and even between I/Os in the same
session.

Reduce the locked region to active_ios list for which active_ios_lock is
intended. Spinlock CPU usage decreases from 18% down to 13%. IOPS are
increased from 220 kIOPS to 264 kIOPS for one LUN.

Link: https://lore.kernel.org/r/20210914105539.6942-4-d.bogdanov@yadro.com
Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
Reviewed-by: Ram Vegesna <ram.vegesna@broadcom.com>
Signed-off-by: Dmitry Bogdanov <d.bogdanov@yadro.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/elx/efct/efct_scsi.c