Skip to content

Disable retries for stats payload sends#2249

Open
VianneyRuhlmann wants to merge 2 commits into
mainfrom
dd/no-retry-stats-payload
Open

Disable retries for stats payload sends#2249
VianneyRuhlmann wants to merge 2 commits into
mainfrom
dd/no-retry-stats-payload

Conversation

@VianneyRuhlmann

@VianneyRuhlmann VianneyRuhlmann commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Makes StatsExporter send stats payloads with no retries (single attempt) instead of the default 5-retry exponential backoff.

Motivation

The Client-Side Stats spec (v1.2.0, Flush Requirements) mandates "No Retry Logic: Stats are fire-and-forget; failed payloads are not retried" and that transport errors must not block stats computation.

Spec: datadoghq.atlassian.net/wiki/spaces/APM/pages/5758458333/v1.2.0#Flush-Requirements

Changes

  • send_payload now passes RetryStrategy::new(0, 0, RetryBackoffType::Constant, None) instead of RetryStrategy::default().
  • Updated test_send_stats_fail to expect a single request attempt instead of 6 (initial + 5 retries).

How to test the change?

cargo check -p libdd-trace-stats and cargo nextest run -p libdd-trace-stats (couldn't run in sandbox: a git dependency is blocked by the network allowlist).


PR by Bits - View session in Datadog

Comment @DataDog to request changes

@datadog-prod-us1-6

datadog-prod-us1-6 Bot commented Jul 17, 2026

Copy link
Copy Markdown

View session in Datadog

Bits Code status: ✅ Done

CI Auto-fix: Disabled | Enable

Comment @DataDog to request changes

@datadog-datadog-prod-us1-2

Copy link
Copy Markdown

I can only run on private repositories.

@VianneyRuhlmann
VianneyRuhlmann marked this pull request as ready for review July 17, 2026 15:58
@VianneyRuhlmann
VianneyRuhlmann requested a review from a team as a code owner July 17, 2026 15:58
@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

📚 Documentation Check Results

⚠️ 872 documentation warning(s) found

📦 libdd-trace-stats - 872 warning(s)


Updated: 2026-07-17 16:08:04 UTC | Commit: 10c64e5 | missing-docs job results

@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

🔒 Cargo Deny Results

⚠️ 2 issue(s) found, showing only errors (advisories, bans, sources)

📦 libdd-trace-stats - 2 error(s)

Show output
error[vulnerability]: Invalid pointer dereference in `fmt::Pointer` impl for `Atomic` and `Shared` when the underlying pointer is invalid
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:66:1
   │
66 │ crossbeam-epoch 0.9.18 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0204
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0204
   ├ Affected versions of `fmt::Display` dereference the underlying pointer. This causes a invalid pointer dereference e.g., when a pointer created with `Atomic::null` or `Shared::null`. `fmt::Debug` impls and pre-0.9 `fmt::Display` impls, which do not dereference pointers, are not affected by this issue.
   ├ Announcement: https://github.com/crossbeam-rs/crossbeam/pull/1276
   ├ Solution: Upgrade to >=0.9.20 (try `cargo update -p crossbeam-epoch`)
   ├ crossbeam-epoch v0.9.18
     └── crossbeam-deque v0.8.5
         └── rayon-core v1.12.1
             └── rayon v1.10.0
                 └── criterion v0.5.1
                     ├── libdd-common v5.1.0
                     │   ├── libdd-capabilities-impl v3.0.0
                     │   │   ├── libdd-shared-runtime v2.0.0
                     │   │   │   ├── libdd-telemetry v6.0.0
                     │   │   │   │   └── libdd-trace-stats v6.0.0
                     │   │   │   └── libdd-trace-stats v6.0.0 (*)
                     │   │   ├── libdd-trace-stats v6.0.0 (*)
                     │   │   └── libdd-trace-utils v9.0.0
                     │   │       ├── libdd-trace-obfuscation v5.0.0
                     │   │       │   └── libdd-trace-stats v6.0.0 (*)
                     │   │       ├── libdd-trace-stats v6.0.0 (*)
                     │   │       └── (dev) libdd-trace-utils v9.0.0 (*)
                     │   ├── libdd-dogstatsd-client v4.0.0
                     │   │   └── libdd-trace-stats v6.0.0 (*)
                     │   ├── libdd-shared-runtime v2.0.0 (*)
                     │   ├── libdd-telemetry v6.0.0 (*)
                     │   ├── libdd-trace-obfuscation v5.0.0 (*)
                     │   ├── libdd-trace-stats v6.0.0 (*)
                     │   └── libdd-trace-utils v9.0.0 (*)
                     ├── (dev) libdd-ddsketch v1.1.0
                     │   ├── libdd-telemetry v6.0.0 (*)
                     │   └── libdd-trace-stats v6.0.0 (*)
                     ├── (dev) libdd-trace-normalization v3.0.0
                     │   └── libdd-trace-utils v9.0.0 (*)
                     ├── (dev) libdd-trace-obfuscation v5.0.0 (*)
                     ├── (dev) libdd-trace-stats v6.0.0 (*)
                     └── (dev) libdd-trace-utils v9.0.0 (*)

error[unsound]: Rand is unsound with a custom logger using `rand::rng()`
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:198:1
    │
198 │ rand 0.8.5 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unsound advisory detected
    │
    ├ ID: RUSTSEC-2026-0097
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0097
    ├ It has been reported (by [@lopopolo](https://github.com/lopopolo)) that the `rand` library is [unsound](https://rust-lang.github.io/unsafe-code-guidelines/glossary.html#soundness-of-code--of-a-library) (i.e. that safe code using the public API can cause Undefined Behaviour) when all the following conditions are met:
      
      - The `log` and `thread_rng` features are enabled
      - A [custom logger](https://docs.rs/log/latest/log/#implementing-a-logger) is defined
      - The custom logger accesses `rand::rng()` (previously `rand::thread_rng()`) and calls any `TryRng` (previously `RngCore`) methods on `ThreadRng`
      - The `ThreadRng` (attempts to) reseed while called from the custom logger (this happens every 64 kB of generated data)
      - Trace-level logging is enabled or warn-level logging is enabled and the random source (the `getrandom` crate) is unable to provide a new seed
      
      `TryRng` (previously `RngCore`) methods for `ThreadRng` use `unsafe` code to cast `*mut BlockRng<ReseedingCore>` to `&mut BlockRng<ReseedingCore>`. When all the above conditions are met this results in an aliased mutable reference, violating the Stacked Borrows rules. Miri is able to detect this violation in sample code. Since construction of [aliased mutable references is Undefined Behaviour](https://doc.rust-lang.org/stable/nomicon/references.html), the behaviour of optimized builds is hard to predict.
    ├ Announcement: https://github.com/rust-random/rand/pull/1763
    ├ Solution: Upgrade to >=0.10.1 OR <0.10.0, >=0.9.3 OR <0.9.0, >=0.8.6 (try `cargo update -p rand`)
    ├ rand v0.8.5
      ├── libdd-common v5.1.0
      │   ├── libdd-capabilities-impl v3.0.0
      │   │   ├── libdd-shared-runtime v2.0.0
      │   │   │   ├── libdd-telemetry v6.0.0
      │   │   │   │   └── libdd-trace-stats v6.0.0
      │   │   │   └── libdd-trace-stats v6.0.0 (*)
      │   │   ├── libdd-trace-stats v6.0.0 (*)
      │   │   └── libdd-trace-utils v9.0.0
      │   │       ├── libdd-trace-obfuscation v5.0.0
      │   │       │   └── libdd-trace-stats v6.0.0 (*)
      │   │       ├── libdd-trace-stats v6.0.0 (*)
      │   │       └── (dev) libdd-trace-utils v9.0.0 (*)
      │   ├── libdd-dogstatsd-client v4.0.0
      │   │   └── libdd-trace-stats v6.0.0 (*)
      │   ├── libdd-shared-runtime v2.0.0 (*)
      │   ├── libdd-telemetry v6.0.0 (*)
      │   ├── libdd-trace-obfuscation v5.0.0 (*)
      │   ├── libdd-trace-stats v6.0.0 (*)
      │   └── libdd-trace-utils v9.0.0 (*)
      ├── (dev) libdd-ddsketch v1.1.0
      │   ├── libdd-telemetry v6.0.0 (*)
      │   └── libdd-trace-stats v6.0.0 (*)
      ├── (dev) libdd-trace-normalization v3.0.0
      │   └── libdd-trace-utils v9.0.0 (*)
      ├── (dev) libdd-trace-stats v6.0.0 (*)
      ├── libdd-trace-utils v9.0.0 (*)
      └── proptest v1.5.0
          └── (dev) libdd-tinybytes v1.1.1
              ├── (dev) libdd-tinybytes v1.1.1 (*)
              └── libdd-trace-utils v9.0.0 (*)

advisories FAILED, bans ok, sources ok

Updated: 2026-07-17 16:08:04 UTC | Commit: 10c64e5 | dependency-check job results

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8e120341e7

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread libdd-trace-stats/src/stats_exporter.rs
@datadog-prod-us1-6

datadog-prod-us1-6 Bot commented Jul 17, 2026

Copy link
Copy Markdown

Pipelines  Tests

⚠️ Warnings

🚦 3 Pipeline jobs failed

semver-check | validate   View in Datadog   GitHub Actions

Required checks pass | allchecks   View in Datadog   GitHub Actions

pr-name | pr_name_lint   View in Datadog   GitHub Actions

ℹ️ Info

No other issues found (see more)

🧪 All tests passed
❄️ No new flaky tests detected

🎯 Code Coverage (details)
Patch Coverage: 100.00%
Overall Coverage: 74.69% (-0.04%)

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: aa352ce | Docs | Datadog PR Page | Give us feedback!

@VianneyRuhlmann VianneyRuhlmann changed the title fix(stats): disable retries for stats payload sends Disable retries for stats payload sends Jul 17, 2026
@pr-commenter

pr-commenter Bot commented Jul 17, 2026

Copy link
Copy Markdown

Benchmarks

Comparison

Benchmark execution time: 2026-07-17 16:19:21

Comparing candidate commit aa352ce in PR branch dd/no-retry-stats-payload with baseline commit 0c6e2a5 in branch main.

Found 0 performance improvements and 2 performance regressions! Performance is the same for 22 metrics, 0 unstable metrics.

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

scenario:trace_buffer/4_senders/no_delay

  • 🟥 execution_time [+158.852µs; +186.606µs] or [+6.806%; +7.995%]
  • 🟥 throughput [-116763.726op/s; -98954.163op/s] or [-7.560%; -6.407%]

Benchmark execution time: 2026-07-17 16:14:20

Comparing candidate commit aa352ce in PR branch dd/no-retry-stats-payload with baseline commit 0c6e2a5 in branch main.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 3 metrics, 0 unstable metrics.

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

Candidate

Candidate benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz aa352ce 1784304193 dd/no-retry-stats-payload
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
trace_buffer/1_senders/10us_delay execution_time 56.384ms 56.739ms ± 0.292ms 56.639ms ± 0.140ms 56.851ms 57.403ms 57.541ms 57.588ms 1.67% 1.242 0.764 0.51% 0.021ms 1 200
trace_buffer/1_senders/10us_delay throughput 15628.312op/s 15862.420op/s ± 81.202op/s 15890.079op/s ± 39.395op/s 15920.288op/s 15951.873op/s 15956.165op/s 15961.876op/s 0.45% -1.224 0.712 0.51% 5.742op/s 1 200
trace_buffer/1_senders/1us_delay execution_time 50.027ms 50.087ms ± 0.028ms 50.083ms ± 0.010ms 50.093ms 50.142ms 50.188ms 50.210ms 0.25% 1.362 3.002 0.06% 0.002ms 1 200
trace_buffer/1_senders/1us_delay throughput 17924.559op/s 17968.791op/s ± 10.183op/s 17970.223op/s ± 3.631op/s 17973.954op/s 17982.754op/s 17988.239op/s 17990.352op/s 0.11% -1.357 2.985 0.06% 0.720op/s 1 200
trace_buffer/1_senders/no_delay execution_time 334.253µs 340.382µs ± 3.502µs 339.759µs ± 1.701µs 341.837µs 345.857µs 355.910µs 357.516µs 5.23% 2.099 6.996 1.03% 0.248µs 1 200
trace_buffer/1_senders/no_delay throughput 2517370.033op/s 2644359.920op/s ± 26649.693op/s 2648936.055op/s ± 13262.017op/s 2660727.660op/s 2674637.708op/s 2683990.300op/s 2692571.196op/s 1.65% -1.961 6.275 1.01% 1884.418op/s 1 200
trace_buffer/2_senders/10us_delay execution_time 56.688ms 57.121ms ± 0.176ms 57.106ms ± 0.119ms 57.234ms 57.421ms 57.533ms 57.555ms 0.79% 0.189 -0.464 0.31% 0.012ms 1 200
trace_buffer/2_senders/10us_delay throughput 31274.185op/s 31512.453op/s ± 97.098op/s 31520.097op/s ± 66.088op/s 31583.186op/s 31666.514op/s 31714.170op/s 31752.547op/s 0.74% -0.175 -0.468 0.31% 6.866op/s 1 200
trace_buffer/2_senders/1us_delay execution_time 50.058ms 50.114ms ± 0.032ms 50.110ms ± 0.016ms 50.126ms 50.180ms 50.211ms 50.222ms 0.23% 1.169 1.402 0.06% 0.002ms 1 200
trace_buffer/2_senders/1us_delay throughput 35840.523op/s 35917.910op/s ± 22.576op/s 35921.188op/s ± 11.720op/s 35932.887op/s 35945.886op/s 35950.623op/s 35958.086op/s 0.10% -1.165 1.392 0.06% 1.596op/s 1 200
trace_buffer/2_senders/no_delay execution_time 858.540µs 904.819µs ± 19.354µs 904.915µs ± 11.736µs 915.995µs 929.893µs 962.479µs 1035.121µs 14.39% 1.656 9.917 2.13% 1.369µs 1 200
trace_buffer/2_senders/no_delay throughput 1738927.887op/s 1990226.703op/s ± 41346.647op/s 1989136.194op/s ± 25505.913op/s 2018208.338op/s 2055732.955op/s 2078027.014op/s 2096582.028op/s 5.40% -1.144 6.501 2.07% 2923.649op/s 1 200
trace_buffer/4_senders/10us_delay execution_time 57.194ms 57.487ms ± 0.136ms 57.473ms ± 0.095ms 57.572ms 57.737ms 57.826ms 57.946ms 0.82% 0.523 0.258 0.24% 0.010ms 1 200
trace_buffer/4_senders/10us_delay throughput 62127.207op/s 62623.266op/s ± 148.168op/s 62637.628op/s ± 104.174op/s 62740.087op/s 62820.119op/s 62918.142op/s 62943.608op/s 0.49% -0.509 0.234 0.24% 10.477op/s 1 200
trace_buffer/4_senders/1us_delay execution_time 50.115ms 50.175ms ± 0.037ms 50.166ms ± 0.016ms 50.186ms 50.263ms 50.278ms 50.289ms 0.25% 1.299 1.353 0.07% 0.003ms 1 200
trace_buffer/4_senders/1us_delay throughput 71586.041op/s 71749.405op/s ± 52.542op/s 71761.723op/s ± 23.086op/s 71783.709op/s 71810.536op/s 71828.755op/s 71834.333op/s 0.10% -1.296 1.344 0.07% 3.715op/s 1 200
trace_buffer/4_senders/no_delay execution_time 2.365ms 2.507ms ± 0.049ms 2.514ms ± 0.032ms 2.543ms 2.580ms 2.591ms 2.642ms 5.08% -0.514 -0.035 1.96% 0.003ms 1 200
trace_buffer/4_senders/no_delay throughput 1362792.509op/s 1436705.841op/s ± 28588.592op/s 1431956.231op/s ± 18449.855op/s 1453878.580op/s 1492882.640op/s 1509596.856op/s 1522376.948op/s 6.31% 0.614 0.067 1.98% 2021.519op/s 1 200
trace_buffer/8_senders/10us_delay execution_time 57.658ms 57.959ms ± 0.207ms 57.887ms ± 0.109ms 58.102ms 58.369ms 58.495ms 58.556ms 1.16% 0.894 -0.055 0.36% 0.015ms 1 200
trace_buffer/8_senders/10us_delay throughput 122958.916op/s 124227.536op/s ± 442.095op/s 124379.321op/s ± 233.280op/s 124554.283op/s 124785.327op/s 124831.658op/s 124873.691op/s 0.40% -0.882 -0.083 0.35% 31.261op/s 1 200
trace_buffer/8_senders/1us_delay execution_time 50.205ms 50.297ms ± 0.061ms 50.274ms ± 0.028ms 50.324ms 50.427ms 50.505ms 50.534ms 0.52% 1.406 2.002 0.12% 0.004ms 1 200
trace_buffer/8_senders/1us_delay throughput 142478.182op/s 143149.031op/s ± 174.477op/s 143213.774op/s ± 80.740op/s 143267.960op/s 143337.994op/s 143384.954op/s 143410.994op/s 0.14% -1.398 1.973 0.12% 12.337op/s 1 200
trace_buffer/8_senders/no_delay execution_time 6.304ms 6.619ms ± 0.095ms 6.631ms ± 0.067ms 6.682ms 6.761ms 6.796ms 6.810ms 2.69% -0.519 0.186 1.43% 0.007ms 1 200
trace_buffer/8_senders/no_delay throughput 1057282.385op/s 1087953.987op/s ± 15717.907op/s 1085746.746op/s ± 11033.781op/s 1097764.338op/s 1117161.009op/s 1127910.918op/s 1142102.207op/s 5.19% 0.603 0.357 1.44% 1111.424op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
trace_buffer/1_senders/10us_delay execution_time [56.699ms; 56.780ms] or [-0.071%; +0.071%] None None None
trace_buffer/1_senders/10us_delay throughput [15851.166op/s; 15873.674op/s] or [-0.071%; +0.071%] None None None
trace_buffer/1_senders/1us_delay execution_time [50.083ms; 50.091ms] or [-0.008%; +0.008%] None None None
trace_buffer/1_senders/1us_delay throughput [17967.380op/s; 17970.202op/s] or [-0.008%; +0.008%] None None None
trace_buffer/1_senders/no_delay execution_time [339.897µs; 340.867µs] or [-0.143%; +0.143%] None None None
trace_buffer/1_senders/no_delay throughput [2640666.528op/s; 2648053.311op/s] or [-0.140%; +0.140%] None None None
trace_buffer/2_senders/10us_delay execution_time [57.096ms; 57.145ms] or [-0.043%; +0.043%] None None None
trace_buffer/2_senders/10us_delay throughput [31498.996op/s; 31525.910op/s] or [-0.043%; +0.043%] None None None
trace_buffer/2_senders/1us_delay execution_time [50.110ms; 50.119ms] or [-0.009%; +0.009%] None None None
trace_buffer/2_senders/1us_delay throughput [35914.781op/s; 35921.039op/s] or [-0.009%; +0.009%] None None None
trace_buffer/2_senders/no_delay execution_time [902.137µs; 907.501µs] or [-0.296%; +0.296%] None None None
trace_buffer/2_senders/no_delay throughput [1984496.455op/s; 1995956.950op/s] or [-0.288%; +0.288%] None None None
trace_buffer/4_senders/10us_delay execution_time [57.468ms; 57.506ms] or [-0.033%; +0.033%] None None None
trace_buffer/4_senders/10us_delay throughput [62602.731op/s; 62643.800op/s] or [-0.033%; +0.033%] None None None
trace_buffer/4_senders/1us_delay execution_time [50.170ms; 50.180ms] or [-0.010%; +0.010%] None None None
trace_buffer/4_senders/1us_delay throughput [71742.123op/s; 71756.687op/s] or [-0.010%; +0.010%] None None None
trace_buffer/4_senders/no_delay execution_time [2.500ms; 2.514ms] or [-0.273%; +0.273%] None None None
trace_buffer/4_senders/no_delay throughput [1432743.737op/s; 1440667.945op/s] or [-0.276%; +0.276%] None None None
trace_buffer/8_senders/10us_delay execution_time [57.930ms; 57.988ms] or [-0.049%; +0.049%] None None None
trace_buffer/8_senders/10us_delay throughput [124166.266op/s; 124288.806op/s] or [-0.049%; +0.049%] None None None
trace_buffer/8_senders/1us_delay execution_time [50.289ms; 50.306ms] or [-0.017%; +0.017%] None None None
trace_buffer/8_senders/1us_delay throughput [143124.850op/s; 143173.212op/s] or [-0.017%; +0.017%] None None None
trace_buffer/8_senders/no_delay execution_time [6.606ms; 6.632ms] or [-0.199%; +0.199%] None None None
trace_buffer/8_senders/no_delay throughput [1085775.636op/s; 1090132.338op/s] or [-0.200%; +0.200%] None None None

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz aa352ce 1784304193 dd/no-retry-stats-payload
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 2.067µs 2.086µs ± 0.009µs 2.085µs ± 0.004µs 2.089µs 2.105µs 2.107µs 2.110µs 1.23% 0.830 0.398 0.42% 0.001µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [2.085µs; 2.087µs] or [-0.058%; +0.058%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz aa352ce 1784304193 dd/no-retry-stats-payload
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 21.251µs 21.693µs ± 0.230µs 21.649µs ± 0.126µs 21.801µs 22.145µs 22.324µs 22.490µs 3.89% 0.890 0.756 1.06% 0.016µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [21.661µs; 21.725µs] or [-0.147%; +0.147%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz aa352ce 1784304193 dd/no-retry-stats-payload
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
concentrator/add_spans_to_concentrator execution_time 8.425ms 8.454ms ± 0.017ms 8.450ms ± 0.010ms 8.464ms 8.488ms 8.511ms 8.516ms 0.79% 1.167 1.349 0.20% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [8.452ms; 8.457ms] or [-0.028%; +0.028%] None None None

Baseline

Baseline benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0c6e2a5 1784223782 main
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
trace_buffer/1_senders/10us_delay execution_time 56.349ms 56.581ms ± 0.132ms 56.548ms ± 0.072ms 56.645ms 56.832ms 56.982ms 57.107ms 0.99% 1.053 1.514 0.23% 0.009ms 1 200
trace_buffer/1_senders/10us_delay throughput 15759.794op/s 15906.371op/s ± 37.135op/s 15915.631op/s ± 20.348op/s 15934.488op/s 15954.775op/s 15967.235op/s 15971.768op/s 0.35% -1.036 1.460 0.23% 2.626op/s 1 200
trace_buffer/1_senders/1us_delay execution_time 49.980ms 50.075ms ± 0.026ms 50.080ms ± 0.010ms 50.087ms 50.124ms 50.146ms 50.156ms 0.15% -0.065 1.260 0.05% 0.002ms 1 200
trace_buffer/1_senders/1us_delay throughput 17944.011op/s 17973.202op/s ± 9.177op/s 17971.190op/s ± 3.731op/s 17977.689op/s 17988.905op/s 17990.209op/s 18007.177op/s 0.20% 0.070 1.259 0.05% 0.649op/s 1 200
trace_buffer/1_senders/no_delay execution_time 333.391µs 339.933µs ± 3.365µs 339.376µs ± 1.688µs 341.388µs 345.790µs 352.573µs 355.177µs 4.66% 1.572 4.195 0.99% 0.238µs 1 200
trace_buffer/1_senders/no_delay throughput 2533946.033op/s 2647836.022op/s ± 25825.694op/s 2651922.191op/s ± 13251.352op/s 2663067.486op/s 2680602.991op/s 2687798.439op/s 2699535.265op/s 1.80% -1.464 3.727 0.97% 1826.152op/s 1 200
trace_buffer/2_senders/10us_delay execution_time 56.762ms 57.264ms ± 0.204ms 57.245ms ± 0.144ms 57.420ms 57.597ms 57.694ms 57.819ms 1.00% 0.145 -0.451 0.35% 0.014ms 1 200
trace_buffer/2_senders/10us_delay throughput 31131.672op/s 31433.918op/s ± 111.775op/s 31444.032op/s ± 79.175op/s 31517.498op/s 31602.726op/s 31675.588op/s 31711.348op/s 0.85% -0.129 -0.456 0.35% 7.904op/s 1 200
trace_buffer/2_senders/1us_delay execution_time 50.059ms 50.115ms ± 0.039ms 50.106ms ± 0.022ms 50.132ms 50.203ms 50.243ms 50.250ms 0.29% 1.470 2.012 0.08% 0.003ms 1 200
trace_buffer/2_senders/1us_delay throughput 35821.042op/s 35917.347op/s ± 27.868op/s 35923.635op/s ± 15.965op/s 35938.226op/s 35946.441op/s 35953.211op/s 35957.386op/s 0.09% -1.466 1.997 0.08% 1.971op/s 1 200
trace_buffer/2_senders/no_delay execution_time 838.208µs 885.701µs ± 17.906µs 886.240µs ± 11.979µs 895.912µs 916.250µs 929.325µs 938.029µs 5.84% 0.315 0.021 2.02% 1.266µs 1 200
trace_buffer/2_senders/no_delay throughput 1918917.327op/s 2033111.871op/s ± 40890.300op/s 2031052.072op/s ± 27748.423op/s 2062591.203op/s 2092291.788op/s 2114866.967op/s 2147438.749op/s 5.73% -0.199 -0.032 2.01% 2891.381op/s 1 200
trace_buffer/4_senders/10us_delay execution_time 57.164ms 57.474ms ± 0.142ms 57.458ms ± 0.089ms 57.552ms 57.756ms 57.828ms 57.938ms 0.84% 0.573 0.310 0.25% 0.010ms 1 200
trace_buffer/4_senders/10us_delay throughput 62135.381op/s 62637.552op/s ± 154.221op/s 62654.628op/s ± 97.650op/s 62751.288op/s 62854.817op/s 62960.505op/s 62976.291op/s 0.51% -0.558 0.289 0.25% 10.905op/s 1 200
trace_buffer/4_senders/1us_delay execution_time 50.119ms 50.174ms ± 0.037ms 50.166ms ± 0.018ms 50.191ms 50.247ms 50.296ms 50.309ms 0.28% 1.310 1.815 0.07% 0.003ms 1 200
trace_buffer/4_senders/1us_delay throughput 71558.193op/s 71750.628op/s ± 53.226op/s 71761.810op/s ± 25.974op/s 71784.899op/s 71816.454op/s 71825.687op/s 71829.276op/s 0.09% -1.305 1.799 0.07% 3.764op/s 1 200
trace_buffer/4_senders/no_delay execution_time 2.093ms 2.334ms ± 0.087ms 2.329ms ± 0.058ms 2.388ms 2.494ms 2.534ms 2.542ms 9.13% 0.158 -0.183 3.72% 0.006ms 1 200
trace_buffer/4_senders/no_delay throughput 1416154.020op/s 1544564.786op/s ± 57541.976op/s 1545457.096op/s ± 38152.937op/s 1583477.699op/s 1638050.004op/s 1678964.467op/s 1719768.911op/s 11.28% 0.047 -0.096 3.72% 4068.832op/s 1 200
trace_buffer/8_senders/10us_delay execution_time 57.656ms 57.904ms ± 0.198ms 57.841ms ± 0.103ms 58.004ms 58.311ms 58.464ms 58.602ms 1.32% 1.104 0.591 0.34% 0.014ms 1 200
trace_buffer/8_senders/10us_delay throughput 122862.122op/s 124344.169op/s ± 423.354op/s 124479.546op/s ± 220.641op/s 124662.576op/s 124832.901op/s 124875.116op/s 124877.761op/s 0.32% -1.090 0.548 0.34% 29.936op/s 1 200
trace_buffer/8_senders/1us_delay execution_time 50.213ms 50.290ms ± 0.053ms 50.276ms ± 0.024ms 50.306ms 50.389ms 50.482ms 50.493ms 0.43% 1.462 2.323 0.10% 0.004ms 1 200
trace_buffer/8_senders/1us_delay throughput 142594.127op/s 143168.483op/s ± 149.687op/s 143208.216op/s ± 68.232op/s 143273.955op/s 143332.931op/s 143380.910op/s 143388.423op/s 0.13% -1.455 2.294 0.10% 10.584op/s 1 200
trace_buffer/8_senders/no_delay execution_time 5.481ms 6.616ms ± 0.155ms 6.646ms ± 0.077ms 6.718ms 6.767ms 6.789ms 6.812ms 2.50% -3.097 16.523 2.33% 0.011ms 1 200
trace_buffer/8_senders/no_delay throughput 1056883.682op/s 1088959.952op/s ± 27710.537op/s 1083311.376op/s ± 12409.484op/s 1096462.232op/s 1132034.650op/s 1169288.494op/s 1313660.457op/s 21.26% 3.835 24.112 2.54% 1959.431op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
trace_buffer/1_senders/10us_delay execution_time [56.563ms; 56.600ms] or [-0.032%; +0.032%] None None None
trace_buffer/1_senders/10us_delay throughput [15901.224op/s; 15911.517op/s] or [-0.032%; +0.032%] None None None
trace_buffer/1_senders/1us_delay execution_time [50.071ms; 50.078ms] or [-0.007%; +0.007%] None None None
trace_buffer/1_senders/1us_delay throughput [17971.930op/s; 17974.473op/s] or [-0.007%; +0.007%] None None None
trace_buffer/1_senders/no_delay execution_time [339.466µs; 340.399µs] or [-0.137%; +0.137%] None None None
trace_buffer/1_senders/no_delay throughput [2644256.830op/s; 2651415.215op/s] or [-0.135%; +0.135%] None None None
trace_buffer/2_senders/10us_delay execution_time [57.235ms; 57.292ms] or [-0.049%; +0.049%] None None None
trace_buffer/2_senders/10us_delay throughput [31418.427op/s; 31449.409op/s] or [-0.049%; +0.049%] None None None
trace_buffer/2_senders/1us_delay execution_time [50.110ms; 50.120ms] or [-0.011%; +0.011%] None None None
trace_buffer/2_senders/1us_delay throughput [35913.485op/s; 35921.209op/s] or [-0.011%; +0.011%] None None None
trace_buffer/2_senders/no_delay execution_time [883.219µs; 888.182µs] or [-0.280%; +0.280%] None None None
trace_buffer/2_senders/no_delay throughput [2027444.869op/s; 2038778.873op/s] or [-0.279%; +0.279%] None None None
trace_buffer/4_senders/10us_delay execution_time [57.454ms; 57.493ms] or [-0.034%; +0.034%] None None None
trace_buffer/4_senders/10us_delay throughput [62616.179op/s; 62658.926op/s] or [-0.034%; +0.034%] None None None
trace_buffer/4_senders/1us_delay execution_time [50.169ms; 50.179ms] or [-0.010%; +0.010%] None None None
trace_buffer/4_senders/1us_delay throughput [71743.251op/s; 71758.004op/s] or [-0.010%; +0.010%] None None None
trace_buffer/4_senders/no_delay execution_time [2.322ms; 2.346ms] or [-0.517%; +0.517%] None None None
trace_buffer/4_senders/no_delay throughput [1536590.021op/s; 1552539.550op/s] or [-0.516%; +0.516%] None None None
trace_buffer/8_senders/10us_delay execution_time [57.877ms; 57.932ms] or [-0.047%; +0.047%] None None None
trace_buffer/8_senders/10us_delay throughput [124285.496op/s; 124402.841op/s] or [-0.047%; +0.047%] None None None
trace_buffer/8_senders/1us_delay execution_time [50.283ms; 50.298ms] or [-0.015%; +0.015%] None None None
trace_buffer/8_senders/1us_delay throughput [143147.738op/s; 143189.229op/s] or [-0.014%; +0.014%] None None None
trace_buffer/8_senders/no_delay execution_time [6.594ms; 6.637ms] or [-0.324%; +0.324%] None None None
trace_buffer/8_senders/no_delay throughput [1085119.538op/s; 1092800.366op/s] or [-0.353%; +0.353%] None None None

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz 0c6e2a5 1784223782 main
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 2.071µs 2.088µs ± 0.009µs 2.086µs ± 0.003µs 2.090µs 2.109µs 2.113µs 2.130µs 2.08% 1.633 3.443 0.41% 0.001µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [2.087µs; 2.089µs] or [-0.057%; +0.057%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz 0c6e2a5 1784223782 main
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 20.838µs 21.679µs ± 1.341µs 21.562µs ± 0.129µs 21.698µs 22.001µs 22.553µs 40.233µs 86.59% 13.341 181.992 6.17% 0.095µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [21.493µs; 21.865µs] or [-0.857%; +0.857%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz 0c6e2a5 1784223782 main
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
concentrator/add_spans_to_concentrator execution_time 8.416ms 8.444ms ± 0.019ms 8.438ms ± 0.011ms 8.454ms 8.485ms 8.496ms 8.501ms 0.74% 0.952 0.071 0.23% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [8.441ms; 8.447ms] or [-0.032%; +0.032%] None None None

@dd-octo-sts

dd-octo-sts Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 7.88 MB 7.88 MB 0% (0 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 86.33 MB 86.33 MB +0% (+56 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.62 MB 10.62 MB 0% (0 B) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 97.54 MB 97.54 MB +0% (+80 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 25.58 MB 25.58 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 89.18 KB 89.18 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 185.53 MB 185.53 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 958.60 MB 958.60 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 8.37 MB 8.37 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 89.18 KB 89.18 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 24.76 MB 24.76 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 49.28 MB 49.28 MB -0% (-8 B) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 22.23 MB 22.23 MB +0% (+512 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 90.58 KB 90.58 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 189.98 MB 190.01 MB +.01% (+24.00 KB) 🔍
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 946.54 MB 946.54 MB +0% (+80 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 6.47 MB 6.47 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 90.58 KB 90.58 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.58 MB 26.58 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 46.89 MB 46.89 MB -0% (-8 B) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 77.08 MB 77.08 MB -0% (-8 B) 👌
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 8.83 MB 8.83 MB 0% (0 B) 👌
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 92.50 MB 92.50 MB 0% (0 B) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.74 MB 10.74 MB 0% (0 B) 👌

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants