All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/40] iscsi lock and refcount fix ups
@ 2021-04-03 23:22 Mike Christie
  2021-04-03 23:22 ` [PATCH 01/40] scsi: iscsi: fix shost->max_id use Mike Christie
                   ` (40 more replies)
  0 siblings, 41 replies; 44+ messages in thread
From: Mike Christie @ 2021-04-03 23:22 UTC (permalink / raw)
  To: lduncan, cleech, njavali, mrangankar, GR-QLogic-Storage-Upstream,
	varun, subbu.seetharaman, ketan.mukadam, jitendra.bhivare,
	martin.petersen, linux-scsi, jejb

The following patches apply over Linus's tree or Martin's staging branch.
They fix up the locking and refcount handling in the iscsi code so for
software iscsi we longer need a lock when going from queuecommand to the
xmit thread and no longer need a common iscsi level lock between the xmit
thread and completion paths.

For simple throughput workloads like

fio --filename=/dev/sdb --direct=1 --rw=randwrite --bs=256k \
--ioengine=libaio --iodepth=128 --numjobs=1 --time_based \
--group_reporting --name=throughput --runtime=120

I'm able to get throughput from 24 Gb/s to 28 where I then hit a
bottleneck on the target side.

IOPs might increase by around 10% in some cases with:

fio --filename=/dev/sdb --direct=1 --rw=randwrite --bs=4k \
--ioengine=libaio --iodepth=128 --numjobs=1 --time_based \
--group_reporting --name=throughput --runtime=120

I'm still debugging some target side issues.

A bigger advantage I'm seeing with the patches is that for setups where
you have software iscsi sharing CPUs with other subsystems like vhost
IOPs can increase by up to 20%.

Notes:
- I've tested iscsi_tcp, ib_iser, be2iscsi and qedi. I don't have cxgbi
or bnx2i hardware, but cxbgi changes were API only.

- Lee, the first 2 patches are new bug fixes. The first half are then
similar to what you saw before. I was not sure how far through them you
were. The second half was the part that removed the back lock and frwd
lock from iscsi_queuecommand are new.





^ permalink raw reply	[flat|nested] 44+ messages in thread

end of thread, other threads:[~2021-04-08 16:35 UTC | newest]

Thread overview: 44+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-03 23:22 [PATCH 00/40] iscsi lock and refcount fix ups Mike Christie
2021-04-03 23:22 ` [PATCH 01/40] scsi: iscsi: fix shost->max_id use Mike Christie
2021-04-05 16:00   ` Lee Duncan
2021-04-03 23:22 ` [PATCH 02/40] scsi: libiscsi: fix write starvation Mike Christie
2021-04-03 23:22 ` [PATCH 03/40] scsi: iscsi: remove unneeded task state check Mike Christie
2021-04-05 16:03   ` Lee Duncan
2021-04-03 23:22 ` [PATCH 04/40] scsi: libiscsi: drop frwd lock for session state Mike Christie
2021-04-03 23:22 ` [PATCH 05/40] scsi: iscsi: add task prealloc/free callouts Mike Christie
2021-04-03 23:22 ` [PATCH 06/40] scsi: qedi: implement alloc_task_priv/free_task_priv Mike Christie
2021-04-03 23:23 ` [PATCH 07/40] scsi: bnx2i: " Mike Christie
2021-04-03 23:23 ` [PATCH 08/40] scsi: iser, be2iscsi, qla4xxx: set scsi_host_template cmd_size Mike Christie
2021-04-03 23:23 ` [PATCH 09/40] scsi: bnx2i: " Mike Christie
2021-04-03 23:23 ` [PATCH 10/40] scsi: qedi: " Mike Christie
2021-04-03 23:23 ` [PATCH 11/40] scsi: iscsi_tcp, libcxgbi: use init_cmd_priv/exit_cmd_priv Mike Christie
2021-04-03 23:23 ` [PATCH 12/40] scsi: libiscsi: use scsi_host_busy_iter Mike Christie
2021-04-03 23:23 ` [PATCH 13/40] scsi: be2iscsi: " Mike Christie
2021-04-03 23:23 ` [PATCH 14/40] scsi: libiscsi rename iscsi_complete_task Mike Christie
2021-04-03 23:23 ` [PATCH 15/40] scsi: libiscsi: add helper to complete a iscsi task Mike Christie
2021-04-03 23:23 ` [PATCH 16/40] scsi: be2iscsi: switch to iscsi_complete_task Mike Christie
2021-04-03 23:23 ` [PATCH 17/40] scsi: qedi: cleanup abort handling Mike Christie
2021-04-03 23:23 ` [PATCH 18/40] scsi: qedi: misc cleanup Mike Christie
2021-04-03 23:23 ` [PATCH 19/40] scsi: qedi: drop libiscsi itt use Mike Christie
2021-04-03 23:23 ` [PATCH 20/40] scsi: qedi: rm unused nr_hw_queues Mike Christie
2021-04-03 23:23 ` [PATCH 21/40] scsi: iscsi: use blk/scsi-ml mq cmd pre-allocator Mike Christie
2021-04-03 23:23 ` [PATCH 22/40] scsi: libiscsi: remove ISCSI_TASK_ABRT_SESS_RECOV Mike Christie
2021-04-03 23:23 ` [PATCH 23/40] scsi: libiscsi: remove ISCSI_TASK_REQUEUE_SCSIQ Mike Christie
2021-04-03 23:23 ` [PATCH 24/40] scsi: be2iscsi: check for running task under back_lock Mike Christie
2021-04-03 23:23 ` [PATCH 25/40] scsi: iscsi: add mgmt lock Mike Christie
2021-04-03 23:23 ` [PATCH 26/40] scsi: iscsi: replace back_lock with task lock for lookup Mike Christie
2021-04-03 23:23 ` [PATCH 27/40] scsi: qedi: use task lock when checking task state Mike Christie
2021-04-03 23:23 ` [PATCH 28/40] scsi: be2iscsi: replace back_lock with task lock during eh Mike Christie
2021-04-03 23:23 ` [PATCH 29/40] scsi: libiscsi: " Mike Christie
2021-04-03 23:23 ` [PATCH 30/40] scsi: be2iscsi: prep for back_lock removal Mike Christie
2021-04-03 23:23 ` [PATCH 31/40] scsi: iscsi: rm iscsi_put_task back_lock requirement Mike Christie
2021-04-03 23:23 ` [PATCH 32/40] scsi: libiscsi: improve conn_send_pdu API Mike Christie
2021-04-03 23:23 ` [PATCH 33/40] scsi: libiscsi: add max/exp cmdsn lock Mike Christie
2021-04-03 23:23 ` [PATCH 34/40] scsi: iscsi: remove back_lock Mike Christie
2021-04-03 23:23 ` [PATCH 35/40] scsi: libiscsi: update leadconn comments/locking Mike Christie
2021-04-03 23:23 ` [PATCH 36/40] scsi: libiscsi: move ISCSI_SUSPEND_BIT check during queueing Mike Christie
2021-04-03 23:23 ` [PATCH 37/40] scsi: libiscsi: add new task state for requeues Mike Christie
2021-04-03 23:23 ` [PATCH 38/40] scsi: libiscsi: replace list_head with llist_head Mike Christie
2021-04-03 23:23 ` [PATCH 39/40] scsi: libiscsi: remove queued_cmdsn Mike Christie
2021-04-03 23:23 ` [PATCH 40/40] scsi: iscsi_tcp: tell net layer we are sending multiple pdus Mike Christie
2021-04-08 16:34 ` [PATCH 00/40] iscsi lock and refcount fix ups michael.christie

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.