Latency test between 2 appliances in 2 Diff DC

nivesh Member Posts: 10

Hi Team,

Looking of suggestion to do a latency test across DC **solace connectivity **connected via Bridge component.

Solace (DC 1) <> BRIDGE bi directional <> Solace (DC2)

How can we use sdkperf in this case , where publisher and consumer not connected to same DC ?

Any suggestion is very much appreciated!

Best Answer


  • nram
    nram Member, Employee Posts: 80 Solace Employee
    edited August 2021 #3

    Hello @nivesh , Iam assuming you are asking this question because you are used to running a single sdkperf instance to measure latency from one performance host to one broker. For the usecase you describe, most logical thing to do would be to run sdkperf from (atleast) two different performance hosts, local to each DC. You can still use latency measurement flags with sdkperf (e.g -lat).
    Since you are doing bidirectional bridging, something like:

    Publishers on DC1 (sdkperf -ptl) -> DC1 <=bridge=> DC2 -> Consumers on DC2 (sdkperf -sql)
    Consumers on DC1 <- DC1 <=bridge=> DC2 <- Publishers on DC2

    Its important to run publishers and consumers on hosts that are in close network proximity (eg; same subnet) to Solace brokers .

  • nivesh
    nivesh Member Posts: 10

    Hi Naram, thanks for suggestion.
    Need to understand Basic working of tool.
    How does skd perf calculate the latency while connected same host and 2 diff instance running in above case across DC?
    If receiving at other end how will it co-relate the messages ?

  • nram
    nram Member, Employee Posts: 80 Solace Employee
    #5 Answer ✓

    Hi @nivesh , sdkperf publisher puts timestamp and tags in the message that the consumer can use to correlate. I should also have mentioned that the clocks on the performance hosts should be synchronized.
    If you haven't already, pl check out these links:

  • nivesh
    nivesh Member Posts: 10

    Hi @nram, Thanks! for sharing crucial info, it is perfect rational explanation. Let me attempt with you tip-off. :)

  • ChristianHoltfurth
    ChristianHoltfurth Member, Employee Posts: 68 Solace Employee

    Hi @nivesh ,
    Further to @nram 's reply:
    It might be hard to synchronise the clocks across two different hosts down to the level required to get a reliable measurement.
    In this case you could measure the round-trip latency by having one sdkperf on your second Solace broker respond back to the first sdkperf instance. This way all latency calculation would be done on the same host/clock and avoids the problem of clock synchronisation.
    Your one-way latency can simply be derived from the round-trip latency (one way = round-trip / 2).

    To start your responder sdkperf instance connecting to your second Solace broker:
    ./sdkperf_c [… connection details e.g. cip etc …] -stl=latency -cm=reply

    To start your "pinger" sdkperf instance connecting to your first Solace broker, run something like:
    ./sdkperf_c [… connection details e.g. cip etc …] -ptl=latency -l -lat -lwu=2 -psm -mn=100 -mr=10 -msa=100 -tod -prt

    I'm using latency as the topic to send out the "pings". The sdkperf instances are using request-reply for the responses, which will be sent back to a topic starting with #P2P/.
    You'll need to configure those on your bridges for this to work.

    Best regards,

  • nivesh
    nivesh Member Posts: 10
    edited August 2021 #8

    Hi @nram @ChristianHoltfurth ,

    HK to UK have 100 ms latency.

    I publish msz from HK at X time so msz will reach to UK broker at, let's say say (X+100ms).

    Consumer in HK receive the msz post X+100ms+100 ms , so what would be the latency shown in consumer report ?

    Current time - (X+100ms) ?
    Current time - X(sending time) Time ?