The Messaging module benchmarks the SMA (Simple Messaging Architecture) layer, which provides publish-subscribe messaging abstractions on top of the link layer.
Overview
The SMA layer adds messaging semantics including:
Channel-based pub/sub
Message routing
Quality of Service (QoS) levels
Multicast support
This benchmark measures the overhead of these abstractions compared to raw link layer performance.
Test Programs
Sender
Class: com.neeve.perf.sma.Sender
Publishes messages to a channel.
Receiver
Class: com.neeve.perf.sma.Receiver
Subscribes to and receives messages from a channel.
Command-Line Parameters
Common Parameters (Both Sender and Receiver)
Short
Long
Required
Default
Description
-u
--username
Yes
-
Bus binding username
-d
--descriptor
Yes
-
Messaging bus connection descriptor
-c
--testCount
No
3000000
Number of messages (< 1 for unlimited)
-r
--testRate
Yes
100000
Send rate (< 1 for unlimited)
-k
--channelKey
No
null
Channel key
-f
--channelFilter
No
null
Channel filter
-q
--channelQos
No
Guaranteed
Delivery QOS (Guaranteed or BestEffort)
-e
--encoding
No
rumi.protobuf
Encoding type
-i
--printIntervalStats
No
false
Output stats at periodic intervals
Sender-Specific Parameters
Short
Long
Default
Description
-p
--dontPopulateMessage
false
Don't populate message content (timestamp only)
-a
--cpuAffinityMask
null
CPU affinity mask for sending thread
Running Benchmarks
Basic Pub/Sub Test
On Receiver Machine:
On Sender Machine:
Interpreting Results
The SMA layer adds minimal overhead over the link layer: