> The way I understand the sequence of events w/o the
 > patch is:
 > 
 > ib_req_notify_cq(IB_CQ_NEXT_COMP)
 > CQE 1 added to queue
 >      callback scheduled via tasklet
 >      future callbacks disarmed
 > callback function calls ib_req_notify_cq(IB_CQ_NEXT_COMP)
 > callback function calls ib_poll_cq() and gets CQE 1
 > callback function calls ib_poll_cq() and gets none
 > CQE 2 added to queue via IRQ
 >      callback scheduled via tasklet
 >      future callbacks disarmed
 > callback function returns
 > some time later, tasklet runs and calls CQ callback function.
 > callback function calls ib_req_notify_cq(IB_CQ_NEXT_COMP)
 > callback function calls ib_poll_cq() and gets CQE 2
 > 
 > Since a tasklet or workqueue can be scheduled in the
 > callback function, the second CQE isn't "missed" but
 > there is a scheduling delay before the callback happens
 > and sees CQE 2.

Sure but a tasklet at least is likely to have pretty low latency.  And
maybe there's a better chance of batching completion processing by
introducing a little delay there.  So maybe it helps, maybe it doesn't.

 > I'm willing to withdraw the 1-3 patches.
 > 
 > I still don't understand why the timing difference matters
 > to RDS.

I'd like to have some data showing an improvement before making this
change.  And as I already said it would be good to know what's really
going on with RDS before we change that.

 - R.
-- 
Roland Dreier <[email protected]> || For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html
--
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