Re: [PATCH rdma-next 0/3] Support out of order data placement

Jason Gunthorpe
2017-07-22T21:27:06Z

On Sat, Jul 22, 2017 at 05:32:05PM +0000, Parav Pandit wrote:
> >
> > Eg
> >
> > RDMA-W VA=0 Data=1
> > RDMA-R VA=0
> > RDMA-W VA=0 Data=2
> >
> > What does the read return? Spec says 1, but it sounds like this relaxed ordering
> > could return 2.
> >
> Spec says Data=1 on RDMA-R only if Fence is set on read operation in Table-76.
> Otherwise duplicate read request after executing RDMA-W2 of Data=2 can return Data=2 on read request.

Erm, I should have written it like this

Initial Condition VA=0 Data = 0
RDMA-W VA=0 Data=1
RDMA-R VA=0

Spec says 1 must be returned, but sounds like this relaxed version
could return 0. So RDMA Write -> RDMA Read degrades to a F

Similarly,

RDMA-W VA=0 Data=1
RDMA-W VA=0 Data=2
SEND

Sounds like with the relaxed version the app could see 1 at SEND CQ
time.

So RDMA-W -> RDMA-W degrades to a F

> > Whta about
> >
> > RDMA-W VA=0 Data=1
> > SEND WITH INVALIDATE VA=0
> > RDMA-W VA=0 Data=2
> >
> > Spec says the second RDMA-W must fail,
> Right.
>
> > but it sounds like this relaxed ordering would allow it to happen.

> No. Table 76 is followed in this case.
> 1st operation Write.
> 2nd operation send.
> There is implicit fence defined by '#' in Table, which is followed.
> So 2nd RDMA-W continue to fail.

So, I expect what is happening here is that the SEND RCQ is delayed
until the sequence numbers catch up, eg guarenteeing that all
packets prior to the SEND have been seen and committed to memory.
Which is what table 76 is primarily talking about.

However, SEND WITH INVALIDATE is a special cases that impacts the
processing of work itself, not just the CPU observation, which is a
bit outside what table 76 is talking about.

I'd advocate for allowing this to be out of order (but documented as
such), as impliclty fencing SEND WITH INVALIDATE is not acceptable for
performance and most workloads using that feature do not care about
this strict ordering.

The requirement is really that by the time the SEND RCQ is seen that
the INVALIDATE has taken effect.

Atomic are basically similar, sounds like Atomic Op -> RDMA Read should
degrade to a F as well. I'd say that is desired as well.

The point is we want a definition for this feature that is broad
enough to allow future hardware optimization, and not just some some
narrow defintion that follows what mlx5 happened to implement.

> I completely understand and agree that storage protocols who depend
> on RDMA-CM would like to have this. But again, unavailability of
> this bit in RDMA-CM is not a blocker for user land apps and let them
> start using it. Once RDMA-CM has it, storage kernel ULPs can also
> be enabled.

If there is no path to get this into the RDMA CM then it is just
another vendor feature and it does not belong in the common API.

Jason