On Wed, Mar 31, 2010 at 8:57 PM, Roland Dreier <[email protected]> wrote:
>  > Processing the flag IB_CQ_REPORT_MISSED_EVENTS causes several IB
>  > drivers to lock and unlock a spinlock. Full-speed SRP I/O can cause
>  > this operation to be invoked more than 100.000 times a second, so the
>  > flag IB_CQ_REPORT_MISSED_EVENTS will have a small but measurable
>  > impact on SRP I/O performance.
>
> It seems the only driver where that happens is ehca.  But on the other
> hand, for mthca/mlx4 it avoids doing something like:
>
>  cq event:
>    request notify <-- CQ is not empty, another event queued
>    drain CQ
>
>  cq event:
>    request notify
>    drain already empty CQ
>
> ie the overhead saved here looks a lot more.

I agree that Ralph's patch helps to avoid the above scenario and that
this should result in a performance improvement -- at least when
IB_CQ_REPORT_MISSED_EVENTS is implemented in an efficient way.

I have to admit that a few months ago I was puzzled myself by the code
in srp_completion() and that I was wondering why it worked. Around
that time I have been experimenting with a patch similar to the one
Ralph posted, and it resulted in lower performance on mlx4 hardware.
So it would help if someone could measure the performance of the SRP
initiator with and without Ralph's patch applied.

Bart.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to