RDS/IW+IB: Set recv ring low water mark to 1/2 full.
authorSteve Wise <swise@opengridcomputing.com>
Thu, 9 Apr 2009 14:09:36 +0000 (14:09 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 10 Apr 2009 00:21:14 +0000 (17:21 -0700)
Currently the recv ring low water mark is 1/4 the depth.  Performance
measurements show that this limits iWARP throughput by flow controlling
the rds-stress senders.  Setting it to 1/2 seems to max the T3
performance.  I tried even higher levels but that didn't help and it
started to increase the rds thread cpu utilization.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Andy Grover <andy.grover@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/rds/ib_ring.c
net/rds/iw_ring.c

index 99a6ccae964cbd0e4fd5eccbaa9c38665be26f19..ff97e8eda858bbb2621c1108ab660ecbc0a6fddc 100644 (file)
@@ -137,7 +137,7 @@ int rds_ib_ring_empty(struct rds_ib_work_ring *ring)
 
 int rds_ib_ring_low(struct rds_ib_work_ring *ring)
 {
-       return __rds_ib_ring_used(ring) <= (ring->w_nr >> 2);
+       return __rds_ib_ring_used(ring) <= (ring->w_nr >> 1);
 }
 
 /*
index d422d4b5deef2b49c183d6030db61d09a98a8729..da8e3b63f66363c67a73700ba356179bbf2fbfc7 100644 (file)
@@ -137,7 +137,7 @@ int rds_iw_ring_empty(struct rds_iw_work_ring *ring)
 
 int rds_iw_ring_low(struct rds_iw_work_ring *ring)
 {
-       return __rds_iw_ring_used(ring) <= (ring->w_nr >> 2);
+       return __rds_iw_ring_used(ring) <= (ring->w_nr >> 1);
 }