[openib-general] Immediate data question
Michael Krause
krause at cup.hp.com
Mon Feb 12 13:14:28 PST 2007
At 09:10 PM 2/11/2007, Devesh Sharma wrote:
>On 2/10/07, Tang, Changqing <changquing.tang at hp.com> wrote:
>> > >
>> > >Not for the receiver, but the sender will be severely slowed down by
>> > >having to wait for the RNR timeouts.
>> >
>> > RNR = Receiver Not Ready so by definition, the data flow
>> > isn't going to
>> > progress until the receiver is ready to receive data. If a
>> > receive QP
>> > enters RNR for a RC, then it is likely not progressing as
>> > desired. RNR
>> > was initially put in place to enable a receiver to create
>> > back pressure to the sender without causing a fatal error
>> > condition. It should rarely be entered and therefore should
>> > have negligible impact on overall performance however when a
>> > RNR occurs, no forward progress will occur so performance is
>> > essentially zero.
>>
>>Mike:
>> I still do not quite understand this issue. I have two
>>situations that have RNR triggered.
>>
>>1. process A and process B is connected with QP. A first post a send to
>>B, B does not post receive. Then A and B are doing a long time
>>RDMA_WRITE each other, A and B just check memory for the RDMA_WRITE
>>message. Finally B will post a receive. Does the first pending send in A
>>block all the later RDMA_WRITE ?
>According to IBTA spec HCA will process WR entries in strict order in
>which they are posted so the send will block all WR posted after this
>send, Until-unless HCA has multiple processing elements, I think even
>then processing order will be maintained by HCA
>If not, since RNR is triggered
The source HCA is responsible for processing work requests in the order
they are posted. If the SEND cannot proceed and receives a RNR, then the
subsequent RDMA Write should not proceed, i.e. the sequence numbers that
define the valid window will not progress and given IB requires strong
ordering within the fabric, nothing sent subsequently should be made
visible at the sink HCA. In your example, if A is sending a SEND followed
by a RDMA Write, the first check should have been that B had provided an
ACK with a credit indicating that a SEND is allowed. If B subsequently
removed access to the buffer that had to be posted to provide that credit,
then it should trigger a RNR NAK and the subsequent RDMA Writes should not
be visible at B since there is no an effective hole in the transmission stream.
>>periodically till B post receive, does it affect the RDMA_WRITE
>>performance between A and B ?
>>
>>2. extend above to three processes, A connect to B, B connect to C, so B
>>has two QPs, but one CQ. A posts a send to B, B does not post receive,
>>rather B and C are doing a long time RDMA_WRITE, or send/recv. But B
>>must sends RNR periodically to A, right?. So does the pending message
>>from A affects B's overall performance between B and C ?
Neither IB nor iWARP provide any ordering guarantees between different data
flows. This is strictly under application control. Hence, if a RNR NAK or
whatever occurs on a RC between A and B, then it has no impact on what
occurs between A and C or B and C. It is simply outside the scope of
either technology to address.
Mike
More information about the general
mailing list