Adapt message and burst sizes to receive buffers
This changes a few intertwined things at the same time: * It allows configuring sending a partial message for large messages, with a maximum derived from the discovered receive buffer sizes; * It uses a different message size limit for datagrams that include retransmits than for those that don't. The argument here is that, having seen flaky networks where large datagrams cause trouble, it makes sense to default to sending retransmits as datagrams that fit in individual packets. * The best performance is generally obtained using the maximum data gram size, but the benefits do fall off quite quickly once they are largish. For flaky networks, it doesn't make sense to go for 64kB datagrams. This tries to find a reasonable compromise. * It now packs mutiple fragments into a single DATAFRAG message to eliminate the cost of using small fragment sizes. The changes in buffer sizes cause the ddsperf sanity check to fail: * The larger amounts of unacknowledged data cause the used memory to be higher, failing the RSS check. Raising the limit seems reasonable (the alternative would be to configure it back to the old values, but it is all empirically determined anyway). * The same also causes the publisher thread to get to run more and the ping/pong bit gets less of a chance. Using fixed-frequency bursts helps with this. This therefore also adjust the test configuration and the thresholds a bit. Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
82e6a7972c
commit
66daba9f2f
13 changed files with 321 additions and 106 deletions
|
@ -1,7 +1,7 @@
|
|||
exitcode=0
|
||||
# RSS/samples/roundtrip numbers are based on experimentation on Travis
|
||||
bin/ddsperf -L -D10 -n10 -Qminmatch:2 -Qrss:10% -Qrss:0.5 -Qsamples:300000 -Qroundtrips:3000 sub ping & ddsperf_pids=$!
|
||||
bin/ddsperf -L -D10 -n10 -Qminmatch:2 -Qrss:10% -Qrss:0.5 pub & ddsperf_pids="$ddsperf_pids $!"
|
||||
bin/ddsperf -L -D10 -n10 -Qminmatch:2 -Qrss:20% -Qrss:1 -Qsamples:300000 -Qroundtrips:3000 sub ping & ddsperf_pids=$!
|
||||
bin/ddsperf -L -D10 -n10 -Qminmatch:2 -Qrss:20% -Qrss:1 pub 100Hz burst 1000 & ddsperf_pids="$ddsperf_pids $!"
|
||||
sleep 11
|
||||
for pid in $ddsperf_pids ; do
|
||||
if kill -0 $pid 2>/dev/null ; then
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue