[rds-devel] So what is RDS congestion ?

Or Gerlitz ogerlitz at voltaire.com
Thu Nov 29 02:45:34 PST 2007


Richard Frank wrote:
> When an application is recving RDS messages, they are queued at the 
> socket. If the application is not draining these messages promptly then 
> they may queue at the socket up until so_rcvbuf limit is reached. If 
> so_rcvbuf limit is reached RDS sends a back pressure message (congestion 
> update) to the RDS sender node informing it to back pressure sends to 
> the specific destination. When an RDS sender attempts to send to a 
> congested recv socket the sender is back pressured via eagain.

>> Richard Frank wrote:
>> Re: [rds-devel] RDS IB transport software flow control?
>> Memory consumption is bounded by so_sndbuf + so_rcvbuf * number of active endpoints.

Olaf, Rick (Hi, I'm trying to get back on track)

I understand that RDS/IB is using one QP per --ip-- (outgoing and 
incoming) destination address. So there is 1:N mapping between a QP 
which may be used by many RDS sockets with different <src,dst> port 
combinations, but same <src,dst> ip signature, correct?

If yes, then generally speaking, there are two levels of buffer 
management to handle: the QP level, and the socket level.

 From reading Rick's FAQ piece and looking on the discussion you held 
over the "RDS IB transport software flow control" thread, I could not 
realize what is the design.

Does the code just computes as in the equation above and posts into the 
QP the additive sum of all the sockets that use it?

> A back pressured sender can either issue a blocking send and wait for 
> can wait in poll with pollin. When the recv socket is un-congested - due 
> to the process pulling off messages, a congestion update message is sent 
> to nodes with back pressured senders which results in waking poll 
> waiters with pollin.

probably a newbie question: why not use pollout?

Or.




More information about the rds-devel mailing list