Network Transport Engine Configuration
Json is used to specify the configuration for a network transport engine. Almost every configuration value has a default that could be overridden by the user's json configure. The values are defined and documented in the following header files.
include/hmbdc/app/udpcast/DefaultUserConfig.hpp
include/hmbdc/app/netmap/DefaultUserConfig.hpp
include/hmbdc/app/tcpcast/DefaultUserConfig.hpp
include/hmbdc/app/rmcast/DefaultUserConfig.hpp #licensed package
include/hmbdc/app/rnetmap/DefaultUserConfig.hpp #licensed package
include/hmbdc/app/netmap/DefaultUserConfig.hpp
include/hmbdc/app/tcpcast/DefaultUserConfig.hpp
include/hmbdc/app/rmcast/DefaultUserConfig.hpp #licensed package
include/hmbdc/app/rnetmap/DefaultUserConfig.hpp #licensed package
The default values work well on most environment and there is usually no need to change them. The performance test tool allows the user to experiment with each configure parameter in a specific environment. It also prints out the configure value documentation nicely - the following prints out the rmcast sender side configure values:
[root@sli-dev bin]# ./perf-rmcast --sender --help
...
--hmbdcName arg (=rmcast-tx) engine thread name
--maxSendBatch arg (=60) up to how many messages to send in a
batch (within one udp packet)
--mtu arg (=1500) mtu, check ifconfig output for this
value for each NIC in use
--netRoundtripLatencyMicrosec arg (=40)
the estmated round multicast network
trip time
--outBufferSizePower2 arg (=0) 2^outBufferSizePower2 is the number of
message that can be buffered in the
engine, default 0 means automatically
calculated based on 128KB as the low
bound
--recvReportDelayMicrosec arg (=1000) recv end needs to report the recved msg
seq every so often
--replayHistoryForNewRecv arg (=0) when a new recipient comes up, it will
get the previous N (default 0) messages
replayed (just) for it. if N >= out
buffer size (see outBufferSizePower2),
the out buffer will keep all messages
and any new recipients will get every
message ever sent, the out buffer needs
to be big enough to hold all sent
messages though
--sendBytesBurst arg (=128000) rate control for how many bytes can be
sent in a burst, us the OS buffer size
(131071) as reference, 0 means no rate
control.
--sendBytesPerSec arg (=120000000) rate control for how many bytes per
second - it is turned off by
sendBytesBurst==0. user is STRONGLY
recommneded to use rate control to
garantee QoS if the throughput could be
so high and saturate the network
--tcpPort arg (=0) tcp port number used as backup
communication channel - 0 means let the
OS pick
--tcpSendBufferBytes arg (=0) OS buffer byte size for outgoing tcp, 0
means OS default value
--topicAdvertisePeriodSeconds arg (=1)
send engine advertise the topics it
covers every so often
--topicRegex arg (=.*) the topic regex pattern this send
engine covers, there shall NOT be an
overlap of this pattern between differt
send engines in the NetContext,
otherwise the first engine is used
--ttl arg (=1) the switch hop number
--udpSendBufferBytes arg (=0) OS buffer byte size for outgoing udp, 0
means OS default value
--waitForSlowReceivers arg (=true) when true, a slow receiver on the
network subscribe to the message might
slow down the sender and other recv
engines since the sender needs to wait
for it; when false, the slow receiver
would be disconnected when it is
detected to be slow. in that case the
receiver will receive a disconnect
message and it by default will
reconnect some messages could be lost
before the reconnection is done.
--ifaceAddr arg (=0.0.0.0/0) ip address for the NIC interface for
multicast IO, 0.0.0.0/0 pointing to the
first intereface that is not a loopback
--loopback arg (=false) set this to true if processes within
the same host need to communicate
using, not effective when using
loopback interface 127.0.0.1.
--mcastAddr arg (=232.43.211.236) multicast address for IO
--mcastPort arg (=4322) multicast port to for IO
--nagling arg (=false) should the backup tcp channel do
nagling
--schedPolicy arg (=SCHED_OTHER) engine thread schedule policy - check
man page for allowed values
--schedPriority arg (=0) engine thread schedule priority - check
man page for allowed values
--tcpIfaceAddr arg (=ifaceAddr) ip address for the NIC interface for
TCP (backup) traffic IO, default points
to the same as ifaceAddr