[ofiwg] send/recv "credits"

Jason Gunthorpe jgunthorpe at obsidianresearch.com
Mon Sep 29 10:05:50 PDT 2014


On Mon, Sep 29, 2014 at 12:08:47AM +0000, Hefty, Sean wrote:

> > I've always designed to avoid full completion q conditions - sendq
> > credit is based on when the sqe is recycled back via the completion q,
> > and recvq credit is computed considering available space in the compq
> > after considering sendq usage.
> 
> But could you have designed it around EAGAIN -- assuming that you
> had real flow control support?

Then you go from 

if (have_sent < can_send) {
  post()
}

To:

if (failed_send) {
  if (post(failed_send) == EGAIN)
      return ...

if (post(cur_send) == EGAIN)
  failed_send = cur_send

And again, I don't see how that is more efficient or simpler.

I'm sort of confused here, introducing hidden flow control is a
middleware function - libfabric will need its own private frame
structure to make that work portably. Is that the intent?

> Actually, a completion queue may use variable sized entries as well.

It doesn't seem something like that could exist without a hidden
on-the-wire flow control scheme of some sort (like RNR ACK).

We already basically have that requirement for many SRQ and XRC type
applications, so it isn't really a new thing.

Jason



More information about the ofiwg mailing list