Recommended Targets

The cards are sorted by total score for this run. Each card is one tested URL or transport configuration; open it to see the URL, run mode, latency, throughput, CPU, and counted cases.

Total score is out of 120. Higher is better for the current test mix. Sub-pills show: latency / throughput / resource / coverage / delivery / send-block. The "Recommended Targets" headline shows the strongest URL for this run.

Total score formula (max 120)
  • Latency 30% — P95/P99 tail latency, payload-weighted geometric mean across cases. Lower latency → higher score.
  • Throughput 20% — recv MB/s on the subscriber side, log-scaled vs 1024 MB/s reference. Higher throughput → higher score.
  • Resource 10% — throughput per unit CPU. Lower CPU at the same throughput → higher score.
  • Delivery 10% — Aggregated loss across all cases: avg_delivery = 100 - loss%. Loss > 5% also lightly cuts per-case latency via a logistic curve (gentle ≤20%, accelerates >20%, capped at ×0.40) to defeat survivor-bias.
  • Send-block 10% — wall-clock time spent inside publish() per message (P99), payload-weighted from latency/backpressure cases. Penalizes APIs that block the publisher thread.
  • Coverage 10% — Passing cases / total cases for this URL. Standalone dimension; also serves as fallback for the topology slot when topology suite is absent.
  • Topology 10% — Topology suite roll-up (1:n / n:1 / n:n). Falls back to clamp(coverage, 60, 95) when topology suite was not run.

total = (0.36·latency + 0.24·throughput + 0.12·resource + 0.12·delivery + 0.12·send-block + 0.12·coverage + 0.12·topology) · confidence_factor

Confidence is derived from aggregate/worst-case loss% and latency sample drops: <5% high, <15% medium, ≥15% noisy; solo means no peers, unknown means all cases failed. Multipliers: high 1.00 / solo·medium 0.99 / unknown·noisy 0.95.

Top recommendation: shm:// total 118/120
It is the strongest result in this run; use latency, throughput, and Transport Health below to confirm details.

#1shm://cross-processLatency score 100📦 Throughput score 100🔋 Resource score 100🎯 Coverage score 100📦 Delivery score 100🔒 Send-block score 86total 118conf high
protocol/transportshm://
URLshm://bench/perf_shm?depth=10
run modecross-process
best P95 latency19.1191 us@ 4 KB / 1000 Hz
peak received throughput11085.9 MB/s@ 256 KB
avg CPU102.737%publisher + subscriber
best send-block P993.758 us@ 16 KB
loss rate0.002%across all cases
counted runs8
#2dds://cross-processLatency score 73📦 Throughput score 91🔋 Resource score 36🎯 Coverage score 100📦 Delivery score 83🔒 Send-block score 30total 85conf noisyLoss 18.546%
protocol/transportdds://
URLdds://bench/perf_dds?qos=better
run modecross-process
best P95 latency56.747 us@ 128 B / 1000 Hz
peak received throughput1462.5 MB/s@ 1 MB
avg CPU129.316%publisher + subscriber
best send-block P9924.616 us@ 16 KB
loss rate18.546%across all cases
counted runs8
#3ddsc://cross-processLatency score 65📦 Throughput score 76🔋 Resource score 30🎯 Coverage score 100📦 Delivery score 96🔒 Send-block score 28total 79conf noisyLoss 73.471%
protocol/transportddsc://
URLddsc://bench/perf_ddsc?qos=better
run modecross-process
best P95 latency33.757 us@ 128 B / 1000 Hz
peak received throughput1202.38 MB/s@ 256 KB
avg CPU152.073%publisher + subscriber
best send-block P9922.7535 us@ 128 B
loss rate73.471%across all cases
counted runs8

Run Overview

Samples
24
Planned Cases
24
Skipped Cases
0
Cases
24
Passing
20
Warning
4
Failing
0

Repeated runs of the same case are merged; averages only count successful runs. Delivery loss is shown once it reaches 5% so trace amounts of normal jitter do not distract from the main result.

Metric Guide

Terminology used throughout the report. Skim it once and the recommendation, heatmaps, and category results below all become easier to interpret.

MetricMeaning
P50 / P90 / P99 latency (and P99.9 / P99.99 in detail tables)Latency percentiles. The heatmap shows P50 (typical), P90 (slower common case), and P99 (tail) side by side; detail tables and scoring also include P99.9 and P99.99 to surface rare slow messages. Lower numbers are better across the board.
Received MB/sHow many megabytes per second the subscriber actually received. This is the main throughput number.
Loss ratioMessages that were expected but not received. Small loss can happen in stress tests; the report only highlights loss at 5% or higher, and marks very high loss more strongly.
ConfidenceA quick read on result reliability, based on run success, visible loss, and latency sample drops. Low confidence means review Transport Health and problem cases; final judgment still depends on latency and throughput.
Message size / payloadThe size and type of each message sent during the test. Larger messages usually stress bandwidth, buffers, and copying more.
Connection topologyThe publisher/subscriber shape, such as 1:1, 1:n, n:1, or n:n. It shows whether a transport scales when more senders or receivers are involved.
CPU EfficiencyHow much throughput is achieved for the CPU used by publisher and subscriber. It helps break ties, but latency and throughput remain the main decision signals.

Transport Health

warnings

Transport Health tells whether this report is trustworthy before you compare scores. It summarizes failed cases, warnings, URL coverage, and problem cases. Green means no obvious problem; yellow means review loss, skipped, or unstable results; red means inspect the problem-case error first. Small loss is still recorded; this section highlights loss, failures, or skips that may affect the conclusion.

TransportModeProblem CasesTotal Cases
shmprocess08
ddsprocess18
ddscprocess38

Tested URL Coverage

TransportURLModesPassingWarningFailingBest Recv MB/sBest P95 us
shmshm://bench/perf_shm?depth=10process80011085.8819.12
ddsdds://bench/perf_dds?qos=betterprocess7101462.5056.75
ddscddsc://bench/perf_ddsc?qos=betterprocess5301066.9033.76

Cases to Review

CategoryModeTransportPayloadConfigRepeatsStatusErrors
throughputprocessddsbytes / 16 KB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: max
1/1WARN 1/1 loss
throughputprocessddscbytes / 256 KB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: max
1/1WARN 1/1 loss
throughputprocessddscbytes / 1 MB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: max
1/1WARN 1/1 loss
latencyprocessddscbytes / 2 MB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1/1WARN 1/1 loss

Latency / Throughput

Latency by Message Size (P50 / P90 / P99, lower is better)

Each cell has three bars: P50 / P90 / P99 (left to right), shorter and greener is better. Numbers on the right follow the same order, in µs. Blank = no data, FAIL = case failed.

low latencymedium latencyhigh latency
test target \ message size
128 B
4 KB
64 KB
512 KB
2 MB
shm://process | shm://bench/perf_shm?depth=10
P5015.5us
P9023.1us
P9932.1us
100/100
P5015.2us
P9017.4us
P9924.9us
100/100
P5018.5us
P9020.8us
P9929.4us
100/100
P5070.7us
P9076.8us
P9993.8us
100/100
P50457us
P90503us
P99548us
100/100
dds://process | dds://bench/perf_dds?qos=better
P5044.7us
P9055.3us
P9963.1us
100/100
P5043.8us
P9058.4us
P9968.0us
100/100
P5059.8us
P9077.8us
P9984.7us
100/100
P50366us
P90454us
P99486us
74/100
P501839us
P902124us
P992198us
57/100
ddsc://process | ddsc://bench/perf_ddsc?qos=better
P5025.4us
P9032.6us
P9938.8us
100/100
P5030.2us
P9034.5us
P9943.3us
100/100
P5051.3us
P9074.6us
P99100us
100/100
P50535us
P90572us
P99704us
56/100
P501519us
P901888us
P992213us
57/100

Throughput by Message Size (received MB/s, higher is better)

This chart uses throughput tests only. Each row is one test target and each column is a message size. The number is mean received MB/s. Longer greener horizontal bars mean the subscriber actually received more data. Blank or failed cells have no valid result.

test target \ message size
16 KB
256 KB
1 MB
shm://process | shm://bench/perf_shm?depth=10
5478 MB/s100/100
11086 MB/s100/100
9815 MB/s100/100
dds://process | dds://bench/perf_dds?qos=better
1098 MB/s51/100
1021 MB/s50/100
1462 MB/s69/100
ddsc://process | ddsc://bench/perf_ddsc?qos=better
1067 MB/s50/100
1202 MB/s53/100
448 MB/s44/100

Category Results

This table lists the best configuration in each test category. Different categories focus on different signals, so compare scores inside the same category.
ModeCategoryBest ResultScoreCoverageConclusion
processlatencyshm://
process | shm://bench/perf_shm?depth=10
99.95/5 case(s), 100.0% repeat success, 1 url(s)Lowest latency: P95 132.66 us, P99 145.52 us, P99.9 165.53 us, P99.99 172.15 us.
processthroughputshm://
process | shm://bench/perf_shm?depth=10
100.03/3 case(s), 100.0% repeat success, 1 url(s)Best throughput: received 8792.82 MB/s, first message 0.74 ms.
This table scores throughput, latency, backpressure, topology, and serialization separately. Compare scores inside the same category; a latency score and a throughput score are not interchangeable.
Each score is mainly driven by the most important metric for that category, with a small health check for failures, visible loss, latency sample drops, and repeat success.
CategoryWhat is scoredHow to read itBest used for
throughputMainly received MB/s, with small checks for send/receive efficiency and health.Throughput tests mainly answer how much data was actually received. Health only highlights clear problems.Useful for choosing the configuration that carries more data under larger payloads or heavier send pressure.
latencyMainly tail latency such as P99, with small checks for max latency, jitter, throughput, and health.Latency tests mainly use percentiles. The heatmap visualises P50 (typical) / P90 (slower common case) / P99 (tail), and scoring also weights P99.9 / P99.99 to penalize rare stalls. Lower numbers are better.Useful for checking whether messages respond quickly and whether slow-message latency stays controlled. Averages can look good while P99/P99.9 still reveals user-visible stalls.
backpressureMainly publisher-side P99 send-block time, with checks for delivered throughput, send/receive efficiency, and health.Backpressure tests simulate slow consumers. Lower publish() blocking time is better, but the run still needs to deliver messages reliably.Useful for spotting transports that stall publisher threads when subscribers fall behind.
topologyMainly total received MB/s and scaling efficiency, with small checks for send/receive efficiency and health.Topology tests mainly check whether total throughput keeps up as publishers or subscribers increase.Useful for one-to-many, many-to-one, and many-to-many deployment shapes.
serializationMainly encode/decode speed, also checking coverage, repeat success, efficiency, balance, CPU, and memory.Serialization mainly compares encode/decode speed and checks repeat stability.Useful for judging data-format cost. It does not represent the full communication path.

Result Highlights

This run covers 3 url(s), 3 transport(s), and 1 mode(s). normal cases: 20/24; problem cases: 4.
The most normal cases come from shm in process mode with 8 normal case(s).
This section highlights the easiest results to notice in this report: highest throughput, lowest latency, topology scaling, and fastest encode/decode. Use it to find leads quickly, then confirm with the recommendation, heatmaps, and problem cases.
Highest 1:1 throughput: shm | process | 1:1 [1p/1s] | bytes | 256 KB
received 11085.88 MB/s | first msg 0.65 ms | repeats 1/1
url: shm://bench/perf_shm?depth=10
Lowest 1:1 latency: shm | process | 1:1 [1p/1s] | bytes | 4 KB
p95 19.12 us | p99 24.87 us | received 3.91 MB/s | repeats 1/1
url: shm://bench/perf_shm?depth=10

Transport Summary

Groups each URL/transport configuration into one row for a quick trend view. A row can include multiple message sizes, rates, or topologies, so use latency/throughput comparisons and trend charts for exact comparisons.

Groups results by transport type, run mode, and test category for a quick trend view. Because a row can include multiple message sizes or rates, use latency/throughput comparisons and trend charts for exact comparisons.
TransportModeURLCategoryScoreCoverageMean Received MB/sMean Run P95 usLoss %Mean Peak RSS MB
shmprocessshm://bench/perf_shm?depth=10latency99.95/5 | 100.0% repeat513.31132.66-41.5
ddsprocessdds://bench/perf_dds?qos=betterlatency60.45/5 | 100.0% repeat323.91561.26-41.6
ddscprocessddsc://bench/perf_ddsc?qos=betterlatency56.85/5 | 100.0% repeat376.51546.9520.99641.1
shmprocessshm://bench/perf_shm?depth=10throughput100.03/3 | 100.0% repeat8792.82--44.9
ddsprocessdds://bench/perf_dds?qos=betterthroughput90.73/3 | 100.0% repeat1193.72-18.54642.0
ddscprocessddsc://bench/perf_ddsc?qos=betterthroughput86.03/3 | 100.0% repeat905.92-73.47141.0

Trend Charts

Throughput (process)

Throughput: Received MB/s vs Payload Size1108688696652443422170.0016 KB256 KB1 MBPayload SizeReceived MB/s

Latency (process)

Latency: Mean Run P95 us vs Payload Size10000100010010.0128 B4 KB64 KB512 KB2 MBPayload SizeMean Run P95 Latency (us)

Loss (process)

Loss: Loss Ratio vs Payload Size21.016.812.68.404.200.00128 B4 KB64 KB512 KB2 MBPayload SizeLoss (%)

Send-block (process)

Send-block: P99 publish() blocking vs Payload Size10000100010010.01.00128 B4 KB64 KB512 KB2 MBPayload SizeSend-block P99 (us)

First Message (process)

First Message ms vs Payload Size4.023.212.411.610.800.0016 KB256 KB1 MBPayload SizeFirst Message (ms)

Resource CPU (process)

Resource: CPU% vs Payload Size23418714093.646.80.0016 KB256 KB1 MBPayload SizeCPU (%)

Resource RSS (process)

Resource: Peak RSS MB vs Payload Size46.837.528.118.79.360.0016 KB256 KB1 MBPayload SizePeak RSS MB

Detail Tables

Transport Detail Table

CategoryModeTransportPayloadConfigRateRepeatsReceived MB/sMean P95 usMean P99.9 usSend-block P99 usLoss %CPU %Peak RSS MBStatus
throughputprocessshmbytes / 16 KB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: max
max1/15477.59--3.760.00197.2146.8OK 1/1
throughputprocessshmbytes / 256 KB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: max
max1/111085.88--24.510.00146.2542.7OK 1/1
throughputprocessshmbytes / 1 MB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: max
max1/19815.00--76.080.00117.7245.1OK 1/1
throughputprocessddsbytes / 16 KB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: max
max1/11097.79--24.6218.55234.0540.8WARN 1/1 loss
throughputprocessddsbytes / 256 KB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: max
max1/11020.88--282.650.02149.9840.8OK 1/1
throughputprocessddsbytes / 1 MB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: max
max1/11462.50--798.170.27158.8944.5OK 1/1
throughputprocessddscbytes / 16 KB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: max
max1/11066.90--33.940.00226.9838.0OK 1/1
throughputprocessddscbytes / 256 KB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: max
max1/11202.38--239.9827.10208.1738.5WARN 1/1 loss
throughputprocessddscbytes / 1 MB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: max
max1/1448.50--650.9473.47200.4746.5WARN 1/1 loss
latencyprocessshmbytes / 128 B
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/10.1224.5046.2810.590.00101.3539.9OK 1/1
latencyprocessshmbytes / 4 KB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/13.9119.1244.208.950.00101.1140.0OK 1/1
latencyprocessshmbytes / 64 KB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/162.5022.8541.4013.200.00101.1140.1OK 1/1
latencyprocessshmbytes / 512 KB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/1500.0080.59105.0747.180.00101.7841.9OK 1/1
latencyprocessshmbytes / 2 MB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/12000.00516.25590.71152.720.00101.2945.8OK 1/1
latencyprocessddsbytes / 128 B
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/10.1256.7577.5630.540.00104.2339.3OK 1/1
latencyprocessddsbytes / 4 KB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/13.9159.5886.7231.650.00104.2639.4OK 1/1
latencyprocessddsbytes / 64 KB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/162.5079.03116.2749.410.00105.2039.8OK 1/1
latencyprocessddsbytes / 512 KB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/1500.00461.33504.33444.110.00121.2942.1OK 1/1
latencyprocessddsbytes / 2 MB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/11053.002149.602329.711601.020.00141.1747.2OK 1/1
latencyprocessddscbytes / 128 B
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/10.1233.7660.2522.750.00102.9535.0OK 1/1
latencyprocessddscbytes / 4 KB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/13.9136.2753.0426.180.00103.1335.2OK 1/1
latencyprocessddscbytes / 64 KB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/162.5078.09111.4868.110.00105.1838.1OK 1/1
latencyprocessddscbytes / 512 KB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/1500.00672.09852.57517.460.00135.6541.2OK 1/1
latencyprocessddscbytes / 2 MB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/11316.001914.532650.541538.9021.00177.6455.9WARN 1/1 loss