diff mbox series

mpi3mr: a perfomance fix

Message ID 20240803150433.17733-1-thenzl@redhat.com (mailing list archive)
State Deferred
Headers show
Series mpi3mr: a perfomance fix | expand

Commit Message

Tomas Henzl Aug. 3, 2024, 3:04 p.m. UTC
Patch 0c52310f2600 ("hrtimer: Ignore slack time for RT tasks in schedule_hrtimeout_range()")
effectivelly shortens a sleep in a polling function in the driver.
That is causing a perfomance regression as the new value
of just 2us is too low. In certain test the perf drop is ~30%.
Fix this by adjusting the sleep to 20us (close to the previous value).

Reported-by: Jan Jurca <jjurca@redhat.com>
Signed-off-by: Tomas Henzl <thenzl@redhat.com>
---
 drivers/scsi/mpi3mr/mpi3mr.h    | 2 +-
 drivers/scsi/mpi3mr/mpi3mr_fw.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Martin K. Petersen Aug. 13, 2024, 2 a.m. UTC | #1
> Patch 0c52310f2600 ("hrtimer: Ignore slack time for RT tasks in
> schedule_hrtimeout_range()") effectivelly shortens a sleep in a
> polling function in the driver. That is causing a perfomance
> regression as the new value of just 2us is too low. In certain test
> the perf drop is ~30%. Fix this by adjusting the sleep to 20us (close
> to the previous value).

Broadcom: Please review, thanks!
Martin K. Petersen Aug. 23, 2024, 1:12 a.m. UTC | #2
> Patch 0c52310f2600 ("hrtimer: Ignore slack time for RT tasks in
> schedule_hrtimeout_range()") effectivelly shortens a sleep in a
> polling function in the driver. That is causing a perfomance
> regression as the new value of just 2us is too low. In certain test
> the perf drop is ~30%. Fix this by adjusting the sleep to 20us (close
> to the previous value).

Broadcom: Please review!
Sumit Saxena Aug. 25, 2024, 8:31 a.m. UTC | #3
On Sat, Aug 3, 2024 at 8:34 PM Tomas Henzl <thenzl@redhat.com> wrote:
>
> Patch 0c52310f2600 ("hrtimer: Ignore slack time for RT tasks in schedule_hrtimeout_range()")
> effectivelly shortens a sleep in a polling function in the driver.
> That is causing a perfomance regression as the new value
> of just 2us is too low. In certain test the perf drop is ~30%.
> Fix this by adjusting the sleep to 20us (close to the previous value).
>
> Reported-by: Jan Jurca <jjurca@redhat.com>
> Signed-off-by: Tomas Henzl <thenzl@redhat.com>
Looks good to me.

Acked-by: Sumit Saxena <sumit.saxena@broadcom.com>
diff mbox series

Patch

diff --git a/drivers/scsi/mpi3mr/mpi3mr.h b/drivers/scsi/mpi3mr/mpi3mr.h
index dc2cdd5f0311..249c1a7285d6 100644
--- a/drivers/scsi/mpi3mr/mpi3mr.h
+++ b/drivers/scsi/mpi3mr/mpi3mr.h
@@ -178,7 +178,7 @@  extern atomic64_t event_counter;
 #define MPI3MR_DEFAULT_SDEV_QD	32
 
 /* Definitions for Threaded IRQ poll*/
-#define MPI3MR_IRQ_POLL_SLEEP			2
+#define MPI3MR_IRQ_POLL_SLEEP			20
 #define MPI3MR_IRQ_POLL_TRIGGER_IOCOUNT		8
 
 /* Definitions for the controller security status*/
diff --git a/drivers/scsi/mpi3mr/mpi3mr_fw.c b/drivers/scsi/mpi3mr/mpi3mr_fw.c
index c196dc14ad20..5695c95fca15 100644
--- a/drivers/scsi/mpi3mr/mpi3mr_fw.c
+++ b/drivers/scsi/mpi3mr/mpi3mr_fw.c
@@ -710,7 +710,7 @@  static irqreturn_t mpi3mr_isr_poll(int irq, void *privdata)
 			    mpi3mr_process_op_reply_q(mrioc,
 				intr_info->op_reply_q);
 
-		usleep_range(MPI3MR_IRQ_POLL_SLEEP, 10 * MPI3MR_IRQ_POLL_SLEEP);
+		usleep_range(MPI3MR_IRQ_POLL_SLEEP, MPI3MR_IRQ_POLL_SLEEP);
 
 	} while (atomic_read(&intr_info->op_reply_q->pend_ios) &&
 	    (num_op_reply < mrioc->max_host_ios));