Configure

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

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

HMBDC PERFORMANCE SAMPLE

measure thread message throughput  measure reliable netmap (rnetmap) network message latencies on a 1Gb link (netmap driver needs...