]> www.infradead.org Git - users/jedix/linux-maple.git/commit
RDS: update IB flow control algorithm
authorWei Lin Guay <wei.lin.guay@oracle.com>
Thu, 17 Dec 2015 08:34:33 +0000 (09:34 +0100)
committerChuck Anderson <chuck.anderson@oracle.com>
Sun, 17 Apr 2016 21:49:50 +0000 (14:49 -0700)
commit7fc265615db670b61047345a51cc87be153c76af
treeea315b9658914f153bb0dae5ec0b066520509aae
parent3657a7131db19c13956ae8c38a7ed546940074ae
RDS: update IB flow control algorithm

The current algorithm that uses 16 as a hard-coded value
in rds_ib_advertise_credits() doesn't serve the purpose, as
post_recvs() are performed in bulk. Thus, the test
condition will always be true.

This patch moves rds_ib_advertise_credits() in to the
post_recvs() loop. Instead of updating the post_recv credits
after all the post_recvs() have completed, the post_recv
credit is being updated in log2 incremental manner.
The proposed exponential quadrupling algorithm serves as a
good compromise between early start of the peer and at the
same time reducing the amount of explicit ACKs. The credit
update explicit ACKs will be generated starting from 16,
256, 4096...etc.

The performance number below shows that this new flow
control algorithm has minimal impact performance even though
it requires additional explicit ACKs.

4 QPs, 32t, 16d -q 8448 -a 256 (rds-parameter)

HCAs flow_ctl no flow_ctl
Mellanox CX3 744K 742K
Oracle QDR M4 819K 831K

Orabug: 22306628

Suggested-by: Håkon Bugge <haakon.bugge@oracle.com>
Reviewed-by: Håkon Bugge <haakon.bugge@oracle.com>
Reviewed-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: Wei Lin Guay <wei.lin.guay@oracle.com>
net/rds/ib_recv.c
net/rds/ib_send.c