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, best and weakest latency cases, 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% — Subscriber-side end-to-end latency. Per case we weight P95×0.70 + P99×0.25 + P99.9×0.04 + P99.99×0.01 through a payload-aware curve, then use an equal-weight geometric mean across cases.
  • 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), equal-weight across 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 89total 118conf high
protocol/transportshm://
URLshm://bench/perf_shm?depth=10
run modecross-process
best P95 latency17.8507 us@ 128 B / 1000 Hz
weakest latency case100/100@ 128 B / 1000 Hz, P95 17.8507 us, P99.9 29.0732 us
peak received throughput14737.2 MB/s@ 256 KB
avg CPU101.699%publisher + subscriber
best send-block P994.517 us@ 16 KB
loss rate0.018%across all cases
counted runs8
#2dds://cross-processLatency score 94📦 Throughput score 90🔋 Resource score 46🎯 Coverage score 100📦 Delivery score 73🔒 Send-block score 57total 95conf noisyLoss 29.828%
protocol/transportdds://
URLdds://bench/perf_dds?qos=better
run modecross-process
best P95 latency33.806 us@ 128 B / 1000 Hz
weakest latency case90.8052/100@ 512 KB / 1000 Hz, P95 201.65 us, P99.9 348.893 us
peak received throughput3705.12 MB/s@ 256 KB
avg CPU135.226%publisher + subscriber
best send-block P9910.8647 us@ 16 KB
loss rate29.828%across all cases
counted runs8
#3ddsc://cross-processLatency score 90📦 Throughput score 81🔋 Resource score 38🎯 Coverage score 100📦 Delivery score 98🔒 Send-block score 52total 93conf noisyLoss 67.125%
protocol/transportddsc://
URLddsc://bench/perf_ddsc?qos=better
run modecross-process
best P95 latency25.0503 us@ 128 B / 1000 Hz
weakest latency case74.2013/100@ 2 MB / 1000 Hz, P95 1161.94 us, P99.9 2129.9 us
peak received throughput3493.88 MB/s@ 256 KB
avg CPU143.494%publisher + subscriber
best send-block P9915.402 us@ 4 KB
loss rate67.125%across all cases
counted runs8

Run Overview

Samples
24
Planned Cases
24
Skipped Cases
0
Cases
24
Passing
22
Warning
2
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 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
ddscprocess18

Tested URL Coverage

TransportURLModesPassingWarningFailingBest Recv MB/sBest P95 us
shmshm://bench/perf_shm?depth=10process80014737.2517.85
ddsdds://bench/perf_dds?qos=betterprocess7103705.1233.81
ddscddsc://bench/perf_ddsc?qos=betterprocess7103493.8825.05

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 / 1 MB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: max
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
P5013.2us
P9016.2us
P9920.6us
100/100
P5017.2us
P9019.3us
P9922.9us
100/100
P5019.4us
P9021.4us
P9924.7us
100/100
P5039.1us
P9041.8us
P9946.3us
100/100
P50293us
P90295us
P99309us
100/100
dds://process | dds://bench/perf_dds?qos=better
P5027.4us
P9032.1us
P9937.8us
100/100
P5028.5us
P9032.9us
P9938.0us
100/100
P5041.2us
P9048.0us
P9952.7us
100/100
P50190us
P90198us
P99210us
100/100
P50790us
P90874us
P99913us
99/100
ddsc://process | ddsc://bench/perf_ddsc?qos=better
P5019.6us
P9023.9us
P9928.1us
100/100
P5021.7us
P9025.2us
P9929.7us
100/100
P5038.1us
P9042.1us
P9958.0us
100/100
P50248us
P90257us
P99279us
100/100
P501079us
P901132us
P991895us
64/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
7721 MB/s100/100
14737 MB/s100/100
9430 MB/s100/100
dds://process | dds://bench/perf_dds?qos=better
2125 MB/s60/100
3705 MB/s52/100
2844 MB/s74/100
ddsc://process | ddsc://bench/perf_ddsc?qos=better
1512 MB/s50/100
3494 MB/s50/100
980 MB/s50/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.65/5 case(s), 100.0% repeat success, 1 url(s)Lowest latency: P95 80.06 us, P99 84.74 us, P99.9 126.80 us, P99.99 143.89 us.
processthroughputshm://
process | shm://bench/perf_shm?depth=10
100.03/3 case(s), 100.0% repeat success, 1 url(s)Best throughput: received 10629.54 MB/s, first message 0.59 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 P95/P99 latency quality, with light tail-stability checks for P99.9/P99.99, max latency, jitter, throughput, and health.Latency tests mainly use percentiles. The heatmap visualises P50 (typical) / P90 (slower common case) / P99 (tail). P99.9 / P99.99 stay visible as tail-stability signals, but they do not dominate the score. Lower numbers are better.Useful for checking whether messages respond quickly and whether slow-message latency stays controlled. P95/P99 drive the score, while P99.9/P99.99 help explain rare 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: 22/24; problem cases: 2.
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 14737.25 MB/s | first msg 0.40 ms | repeats 1/1
url: shm://bench/perf_shm?depth=10
Lowest 1:1 latency: shm | process | 1:1 [1p/1s] | bytes | 128 B
p95 17.85 us | p99 20.61 us | received 0.12 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.65/5 | 100.0% repeat513.3180.06-41.8
ddsprocessdds://bench/perf_dds?qos=betterlatency97.05/5 | 100.0% repeat512.51240.81-41.7
ddscprocessddsc://bench/perf_ddsc?qos=betterlatency85.65/5 | 100.0% repeat513.31303.72-41.7
shmprocessshm://bench/perf_shm?depth=10throughput100.03/3 | 100.0% repeat10629.54--46.9
ddsprocessdds://bench/perf_dds?qos=betterthroughput90.83/3 | 100.0% repeat2891.54-29.82843.1
ddscprocessddsc://bench/perf_ddsc?qos=betterthroughput87.43/3 | 100.0% repeat1995.12-67.12541.6

Trend Charts

Throughput (process)

Throughput: Received MB/s vs Payload Size14737117908842589529470.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 Size0.200.160.120.080.040.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 Size3.402.722.041.360.680.0016 KB256 KB1 MBPayload SizeFirst Message (ms)

Resource CPU (process)

Resource: CPU% vs Payload Size23719014295.047.50.0016 KB256 KB1 MBPayload SizeCPU (%)

Resource RSS (process)

Resource: Peak RSS MB vs Payload Size48.939.129.319.69.780.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/17721.38--4.520.02173.0848.9OK 1/1
throughputprocessshmbytes / 256 KB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: max
max1/114737.25--16.420.00134.5844.2OK 1/1
throughputprocessshmbytes / 1 MB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: max
max1/19430.00--74.870.00106.6247.7OK 1/1
throughputprocessddsbytes / 16 KB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: max
max1/12124.99--10.8629.83237.4643.4WARN 1/1 loss
throughputprocessddsbytes / 256 KB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: max
max1/13705.12--91.623.16209.7241.2OK 1/1
throughputprocessddsbytes / 1 MB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: max
max1/12844.50--347.430.09179.8144.6OK 1/1
throughputprocessddscbytes / 16 KB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: max
max1/11512.00--22.890.00196.2939.2OK 1/1
throughputprocessddscbytes / 256 KB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: max
max1/13493.88--117.470.00202.5939.4OK 1/1
throughputprocessddscbytes / 1 MB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: max
max1/1979.50--351.9667.13200.6046.1WARN 1/1 loss
latencyprocessshmbytes / 128 B
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/10.1217.8529.078.510.00100.8040.1OK 1/1
latencyprocessshmbytes / 4 KB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/13.9120.0429.489.520.00100.8440.1OK 1/1
latencyprocessshmbytes / 64 KB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/162.5022.2041.5710.530.00100.8340.3OK 1/1
latencyprocessshmbytes / 512 KB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/1500.0043.0261.6724.570.00100.8542.2OK 1/1
latencyprocessshmbytes / 2 MB
url: shm://bench/perf_shm?depth=10
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/12000.00297.18472.19164.450.00100.7246.1OK 1/1
latencyprocessddsbytes / 128 B
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/10.1233.8152.3118.580.00102.3539.5OK 1/1
latencyprocessddsbytes / 4 KB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/13.9134.2771.9916.540.00102.3939.6OK 1/1
latencyprocessddsbytes / 64 KB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/162.5049.60100.3327.520.00102.8939.9OK 1/1
latencyprocessddsbytes / 512 KB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/1500.00201.65348.89148.230.00114.6542.0OK 1/1
latencyprocessddsbytes / 2 MB
url: dds://bench/perf_dds?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/11996.00884.741041.76750.660.20155.6047.5OK 1/1
latencyprocessddscbytes / 128 B
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/10.1225.0546.1716.840.00101.5235.5OK 1/1
latencyprocessddscbytes / 4 KB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/13.9126.2554.6015.400.00101.6035.7OK 1/1
latencyprocessddscbytes / 64 KB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/162.5044.1177.7132.330.00102.9338.7OK 1/1
latencyprocessddscbytes / 512 KB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/1500.00261.25300.73199.840.00115.5041.6OK 1/1
latencyprocessddscbytes / 2 MB
url: ddsc://bench/perf_ddsc?qos=better
topology: 1:1 [1p/1s]
pattern: fixed
1000Hz1/12000.001161.942129.901078.110.00171.9657.2OK 1/1