Skip to content

refactor(libdd-data-pipeline): feature gate telemetry#1778

Open
hoolioh wants to merge 7 commits intomainfrom
julio/opt-in-telemetry
Open

refactor(libdd-data-pipeline): feature gate telemetry#1778
hoolioh wants to merge 7 commits intomainfrom
julio/opt-in-telemetry

Conversation

@hoolioh
Copy link
Copy Markdown
Contributor

@hoolioh hoolioh commented Mar 23, 2026

What does this PR do?

This PR adds a new feature flag to libdd-data-pipeline in order to trim down telemetry for cases where is not needed (e.g. serverless)

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 23, 2026

📚 Documentation Check Results

⚠️ 799 documentation warning(s) found

📦 libdd-data-pipeline - 799 warning(s)


Updated: 2026-03-23 16:28:30 UTC | Commit: b726a1c | missing-docs job results

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 23, 2026

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/julio/opt-in-telemetry

Summary by Rule

Rule Base Branch PR Branch Change
unwrap_used 4 4 No change (0%)
Total 4 4 No change (0%)

Annotation Counts by File

File Base Branch PR Branch Change
libdd-data-pipeline/src/telemetry/builder.rs 0 1 ⚠️ +1 (N/A)
libdd-data-pipeline/src/telemetry/mod.rs 1 0 ✅ -1 (-100.0%)
libdd-data-pipeline/src/trace_exporter/error.rs 1 1 No change (0%)
libdd-data-pipeline/src/trace_exporter/mod.rs 2 2 No change (0%)

Annotation Stats by Crate

Crate Base Branch PR Branch Change
clippy-annotation-reporter 5 5 No change (0%)
datadog-ffe-ffi 1 1 No change (0%)
datadog-ipc 20 21 ⚠️ +1 (+5.0%)
datadog-live-debugger 6 6 No change (0%)
datadog-live-debugger-ffi 10 10 No change (0%)
datadog-profiling-replayer 4 4 No change (0%)
datadog-remote-config 3 3 No change (0%)
datadog-sidecar 55 59 ⚠️ +4 (+7.3%)
libdd-common 10 10 No change (0%)
libdd-common-ffi 12 12 No change (0%)
libdd-data-pipeline 5 5 No change (0%)
libdd-ddsketch 2 2 No change (0%)
libdd-dogstatsd-client 1 1 No change (0%)
libdd-profiling 13 13 No change (0%)
libdd-telemetry 19 19 No change (0%)
libdd-tinybytes 4 4 No change (0%)
libdd-trace-normalization 2 2 No change (0%)
libdd-trace-obfuscation 8 8 No change (0%)
libdd-trace-utils 15 15 No change (0%)
Total 195 200 ⚠️ +5 (+2.6%)

About This Report

This report tracks Clippy allow annotations for specific rules, showing how they've changed in this PR. Decreasing the number of these annotations generally improves code quality.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 23, 2026

🔒 Cargo Deny Results

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

📦 libdd-data-pipeline - 4 error(s)

Show output
error[vulnerability]: AWS-LC X.509 Name Constraints Bypass via Wildcard/Unicode CN
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:32:1
   │
32 │ aws-lc-sys 0.38.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0044
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0044
   ├ A logic error in CN (Common Name) validation allows certificates with
     wildcard or raw UTF-8 Unicode CN values to bypass name constraints
     enforcement. The `cn2dnsid` function does not recognize these CN patterns
     as valid DNS identifiers, causing `NAME_CONSTRAINTS_check_CN` to skip
     validation. However, `X509_check_host` accepts these CN values when no
     dNSName SAN is present, allowing certificates to bypass name constraints
     while still being used for hostname verification.
     
     Customers of AWS services do not need to take action. Applications using
     `aws-lc-sys` should upgrade to the most recent release of `aws-lc-sys`.
     
     ## Workarounds
     
     Applications that set `X509_CHECK_FLAG_NEVER_CHECK_SUBJECT` to disable CN
     fallback are not affected. Applications that only encounter certificates
     with dNSName SANs (standard for public WebPKI) are also not affected.
     
     Otherwise, there is no workaround and applications using `aws-lc-sys` should
     upgrade to the most recent releases of `aws-lc-sys`.
   ├ Solution: Upgrade to >=0.39.0 (try `cargo update -p aws-lc-sys`)
   ├ aws-lc-sys v0.38.0
     └── aws-lc-rs v1.16.1
         ├── rustls v0.23.37
         │   ├── hyper-rustls v0.27.7
         │   │   └── libdd-common v3.0.0
         │   │       ├── libdd-data-pipeline v2.0.1
         │   │       ├── libdd-dogstatsd-client v1.0.1
         │   │       │   └── libdd-data-pipeline v2.0.1 (*)
         │   │       ├── libdd-telemetry v3.0.0
         │   │       │   └── libdd-data-pipeline v2.0.1 (*)
         │   │       └── libdd-trace-utils v2.0.2
         │   │           ├── libdd-data-pipeline v2.0.1 (*)
         │   │           ├── libdd-trace-stats v1.0.3
         │   │           │   └── libdd-data-pipeline v2.0.1 (*)
         │   │           └── (dev) libdd-trace-utils v2.0.2 (*)
         │   ├── libdd-common v3.0.0 (*)
         │   └── tokio-rustls v0.26.0
         │       ├── hyper-rustls v0.27.7 (*)
         │       └── libdd-common v3.0.0 (*)
         └── rustls-webpki v0.103.9
             └── rustls v0.23.37 (*)

error[vulnerability]: CRL Distribution Point Scope Check Logic Error in AWS-LC
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:32:1
   │
32 │ aws-lc-sys 0.38.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0048
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0048
   ├ A logic error in CRL distribution point matching in AWS-LC allows a revoked
     certificate to bypass revocation checks during certificate validation, when
     the application enables CRL checking and uses partitioned CRLs with Issuing
     Distribution Point (IDP) extensions.
     
     Customers of AWS services do not need to take action. `aws-lc-sys` contains
     code from AWS-LC. Applications using `aws-lc-sys` should upgrade to the most
     recent release of `aws-lc-sys`.
     
     ## Workarounds
     
     Applications can workaround this issue if they do not enable CRL checking
     (`X509_V_FLAG_CRL_CHECK`). Applications using complete (non-partitioned)
     CRLs without IDP extensions are also not affected.
     
     Otherwise, there is no workaround and applications using `aws-lc-sys` should
     upgrade to the most recent releases of `aws-lc-sys`.
   ├ Announcement: https://aws.amazon.com/security/security-bulletins/2026-010-AWS
   ├ Solution: Upgrade to >=0.39.0 (try `cargo update -p aws-lc-sys`)
   ├ aws-lc-sys v0.38.0
     └── aws-lc-rs v1.16.1
         ├── rustls v0.23.37
         │   ├── hyper-rustls v0.27.7
         │   │   └── libdd-common v3.0.0
         │   │       ├── libdd-data-pipeline v2.0.1
         │   │       ├── libdd-dogstatsd-client v1.0.1
         │   │       │   └── libdd-data-pipeline v2.0.1 (*)
         │   │       ├── libdd-telemetry v3.0.0
         │   │       │   └── libdd-data-pipeline v2.0.1 (*)
         │   │       └── libdd-trace-utils v2.0.2
         │   │           ├── libdd-data-pipeline v2.0.1 (*)
         │   │           ├── libdd-trace-stats v1.0.3
         │   │           │   └── libdd-data-pipeline v2.0.1 (*)
         │   │           └── (dev) libdd-trace-utils v2.0.2 (*)
         │   ├── libdd-common v3.0.0 (*)
         │   └── tokio-rustls v0.26.0
         │       ├── hyper-rustls v0.27.7 (*)
         │       └── libdd-common v3.0.0 (*)
         └── rustls-webpki v0.103.9
             └── rustls v0.23.37 (*)

error[vulnerability]: CRLs not considered authoritative by Distribution Point due to faulty matching logic
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:241:1
    │
241 │ rustls-webpki 0.103.9 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2026-0049
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0049
    ├ If a certificate had more than one `distributionPoint`, then only the first `distributionPoint` would be considered against each CRL's `IssuingDistributionPoint` `distributionPoint`, and then the certificate's subsequent `distributionPoint`s would be ignored.
      
      The impact was that correctly provided CRLs would not be consulted to check revocation. With `UnknownStatusPolicy::Deny` (the default) this would lead to incorrect but safe `Error::UnknownRevocationStatus`. With `UnknownStatusPolicy::Allow` this would lead to inappropriate acceptance of revoked certificates.
      
      This vulnerability is thought to be of limited impact. This is because both the certificate and CRL are signed -- an attacker would need to compromise a trusted issuing authority to trigger this bug.  An attacker with such capabilities could likely bypass revocation checking through other more impactful means (such as publishing a valid, empty CRL.)
      
      More likely, this bug would be latent in normal use, and an attacker could leverage faulty revocation checking to continue using a revoked credential.
      
      This vulnerability is identified as [GHSA-pwjx-qhcg-rvj4](https://github.com/rustls/webpki/security/advisories/GHSA-pwjx-qhcg-rvj4). Thank you to @1seal for the report.
    ├ Solution: Upgrade to >=0.103.10 (try `cargo update -p rustls-webpki`)
    ├ rustls-webpki v0.103.9
      └── rustls v0.23.37
          ├── hyper-rustls v0.27.7
          │   └── libdd-common v3.0.0
          │       ├── libdd-data-pipeline v2.0.1
          │       ├── libdd-dogstatsd-client v1.0.1
          │       │   └── libdd-data-pipeline v2.0.1 (*)
          │       ├── libdd-telemetry v3.0.0
          │       │   └── libdd-data-pipeline v2.0.1 (*)
          │       └── libdd-trace-utils v2.0.2
          │           ├── libdd-data-pipeline v2.0.1 (*)
          │           ├── libdd-trace-stats v1.0.3
          │           │   └── libdd-data-pipeline v2.0.1 (*)
          │           └── (dev) libdd-trace-utils v2.0.2 (*)
          ├── libdd-common v3.0.0 (*)
          └── tokio-rustls v0.26.0
              ├── hyper-rustls v0.27.7 (*)
              └── libdd-common v3.0.0 (*)

error[vulnerability]: Denial of Service via Stack Exhaustion
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:282:1
    │
282 │ time 0.3.41 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2026-0009
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0009
    ├ ## Impact
      
      When user-provided input is provided to any type that parses with the RFC 2822 format, a denial of
      service attack via stack exhaustion is possible. The attack relies on formally deprecated and
      rarely-used features that are part of the RFC 2822 format used in a malicious manner. Ordinary,
      non-malicious input will never encounter this scenario.
      
      ## Patches
      
      A limit to the depth of recursion was added in v0.3.47. From this version, an error will be returned
      rather than exhausting the stack.
      
      ## Workarounds
      
      Limiting the length of user input is the simplest way to avoid stack exhaustion, as the amount of
      the stack consumed would be at most a factor of the length of the input.
    ├ Announcement: https://github.com/time-rs/time/blob/main/CHANGELOG.md#0347-2026-02-05
    ├ Solution: Upgrade to >=0.3.47 (try `cargo update -p time`)
    ├ time v0.3.41
      └── tracing-appender v0.2.3
          └── libdd-log v1.0.0
              └── (dev) libdd-data-pipeline v2.0.1

advisories FAILED, bans ok, sources ok

Updated: 2026-03-23 16:31:31 UTC | Commit: b726a1c | dependency-check job results

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Mar 23, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 70.38%. Comparing base (5bdbcc9) to head (18fa53b).
⚠️ Report is 10 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1778      +/-   ##
==========================================
- Coverage   71.34%   70.38%   -0.96%     
==========================================
  Files         431      411      -20     
  Lines       64719    62154    -2565     
==========================================
- Hits        46171    43748    -2423     
+ Misses      18548    18406     -142     
Components Coverage Δ
libdd-crashtracker 64.82% <ø> (-0.13%) ⬇️
libdd-crashtracker-ffi 34.09% <ø> (-0.77%) ⬇️
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 87.96% <100.00%> (-0.03%) ⬇️
libdd-data-pipeline-ffi 75.20% <ø> (ø)
libdd-common 79.78% <ø> (-0.10%) ⬇️
libdd-common-ffi 73.87% <ø> (ø)
libdd-telemetry 62.48% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 72.56% <ø> (-7.74%) ⬇️
libdd-profiling 81.60% <ø> (-0.02%) ⬇️
libdd-profiling-ffi 64.94% <ø> (ø)
datadog-sidecar 30.64% <ø> (-0.96%) ⬇️
datdog-sidecar-ffi 8.69% <ø> (-0.02%) ⬇️
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 92.26% <ø> (ø)
libdd-trace-protobuf 68.25% <ø> (ø)
libdd-trace-utils 88.95% <ø> (-0.11%) ⬇️
datadog-tracer-flare 86.88% <ø> (ø)
libdd-log 74.69% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@datadog-official
Copy link
Copy Markdown

datadog-official bot commented Mar 23, 2026

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: c00625e | Docs | Datadog PR Page | Was this helpful? React with 👍/👎 or give us feedback!

@pr-commenter
Copy link
Copy Markdown

pr-commenter bot commented Mar 23, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-03-25 08:47:41

Comparing candidate commit c00625e in PR branch julio/opt-in-telemetry with baseline commit c664ed7 in branch main.

Found 6 performance improvements and 12 performance regressions! Performance is the same for 42 metrics, 1 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:credit_card/is_card_number/ 378282246310005

  • 🟥 execution_time [+16.047µs; +16.201µs] or [+23.607%; +23.834%]
  • 🟥 throughput [-2831615.604op/s; -2808754.556op/s] or [-19.248%; -19.092%]

scenario:credit_card/is_card_number/378282246310005

  • 🟥 execution_time [+5.405µs; +5.523µs] or [+8.327%; +8.507%]
  • 🟥 throughput [-1207238.806op/s; -1183550.073op/s] or [-7.837%; -7.683%]

scenario:credit_card/is_card_number/37828224631000521389798

  • 🟥 execution_time [+7.453µs; +7.475µs] or [+16.321%; +16.368%]
  • 🟥 throughput [-3081244.660op/s; -3071624.412op/s] or [-14.071%; -14.027%]

scenario:credit_card/is_card_number/x371413321323331

  • 🟩 execution_time [-397.701ns; -395.813ns] or [-5.817%; -5.790%]
  • 🟩 throughput [+8990028.733op/s; +9033649.223op/s] or [+6.146%; +6.176%]

scenario:credit_card/is_card_number_no_luhn/ 378282246310005

  • 🟥 execution_time [+5.570µs; +5.637µs] or [+10.424%; +10.549%]
  • 🟥 throughput [-1785634.579op/s; -1766418.329op/s] or [-9.541%; -9.439%]

scenario:credit_card/is_card_number_no_luhn/378282246310005

  • 🟥 execution_time [+5.356µs; +5.410µs] or [+10.653%; +10.759%]
  • 🟥 throughput [-1931704.928op/s; -1914394.448op/s] or [-9.713%; -9.626%]

scenario:credit_card/is_card_number_no_luhn/37828224631000521389798

  • 🟥 execution_time [+7.458µs; +7.479µs] or [+16.333%; +16.380%]
  • 🟥 throughput [-3083423.542op/s; -3073894.013op/s] or [-14.079%; -14.035%]

scenario:credit_card/is_card_number_no_luhn/x371413321323331

  • 🟩 execution_time [-400.799ns; -398.713ns] or [-5.861%; -5.830%]
  • 🟩 throughput [+9054345.905op/s; +9101714.771op/s] or [+6.192%; +6.224%]

scenario:sql/obfuscate_sql_string

  • 🟩 execution_time [-198.947µs; -198.760µs] or [-69.577%; -69.512%]

scenario:write only interface

  • 🟩 execution_time [-2.507µs; -2.059µs] or [-45.679%; -37.516%]

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 c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sql/obfuscate_sql_string execution_time 86.889µs 87.083µs ± 0.259µs 87.060µs ± 0.064µs 87.123µs 87.218µs 87.441µs 90.461µs 3.91% 11.172 142.295 0.30% 0.018µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sql/obfuscate_sql_string execution_time [87.047µs; 87.119µs] or [-0.041%; +0.041%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
receiver_entry_point/report/2598 execution_time 3.408ms 3.442ms ± 0.021ms 3.437ms ± 0.010ms 3.449ms 3.485ms 3.506ms 3.527ms 2.64% 1.422 2.404 0.60% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2598 execution_time [3.439ms; 3.445ms] or [-0.084%; +0.084%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time 185.992µs 186.370µs ± 0.209µs 186.353µs ± 0.146µs 186.501µs 186.738µs 186.854µs 186.889µs 0.29% 0.381 -0.445 0.11% 0.015µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5350776.150op/s 5365688.064op/s ± 6008.398op/s 5366158.485op/s ± 4220.077op/s 5370312.950op/s 5375026.735op/s 5376292.599op/s 5376561.606op/s 0.19% -0.376 -0.449 0.11% 424.858op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.814µs 17.899µs ± 0.041µs 17.891µs ± 0.021µs 17.918µs 17.968µs 18.001µs 18.164µs 1.53% 1.803 8.337 0.23% 0.003µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 55054640.574op/s 55868836.247op/s ± 127881.149op/s 55894444.986op/s ± 66776.322op/s 55944371.557op/s 56040585.251op/s 56099786.436op/s 56135173.498op/s 0.43% -1.755 7.991 0.23% 9042.563op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.198µs 10.459µs ± 0.219µs 10.305µs ± 0.055µs 10.692µs 10.769µs 10.836µs 10.848µs 5.27% 0.378 -1.710 2.08% 0.015µs 1 200
normalization/normalize_name/normalize_name/good throughput 92183993.622op/s 95654688.959op/s ± 1983640.989op/s 97040739.097op/s ± 522334.740op/s 97357345.657op/s 97635255.486op/s 97804983.567op/s 98060424.684op/s 1.05% -0.369 -1.723 2.07% 140264.599op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time [186.341µs; 186.399µs] or [-0.016%; +0.016%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5364855.358op/s; 5366520.770op/s] or [-0.016%; +0.016%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.893µs; 17.905µs] or [-0.032%; +0.032%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55851113.150op/s; 55886559.344op/s] or [-0.032%; +0.032%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.428µs; 10.489µs] or [-0.290%; +0.290%] None None None
normalization/normalize_name/normalize_name/good throughput [95379775.396op/s; 95929602.522op/s] or [-0.287%; +0.287%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sdk_test_data/rules-based execution_time 144.092µs 146.339µs ± 1.828µs 146.019µs ± 0.511µs 146.610µs 148.029µs 152.176µs 163.838µs 12.20% 6.078 49.380 1.25% 0.129µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sdk_test_data/rules-based execution_time [146.085µs; 146.592µs] or [-0.173%; +0.173%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_timestamped_x1000 execution_time 4.164ms 4.169ms ± 0.008ms 4.168ms ± 0.001ms 4.170ms 4.172ms 4.176ms 4.275ms 2.56% 11.917 154.950 0.19% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_timestamped_x1000 execution_time [4.168ms; 4.170ms] or [-0.026%; +0.026%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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 12.979ms 13.009ms ± 0.015ms 13.008ms ± 0.009ms 13.017ms 13.032ms 13.051ms 13.088ms 0.62% 1.125 3.481 0.11% 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 [13.007ms; 13.011ms] or [-0.016%; +0.016%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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 18.160µs 26.497µs ± 9.862µs 18.446µs ± 0.228µs 34.947µs 44.622µs 45.726µs 69.934µs 279.12% 0.880 0.475 37.13% 0.697µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [25.130µs; 27.864µs] or [-5.158%; +5.158%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching string interning on wordpress profile execution_time 160.624µs 161.212µs ± 0.302µs 161.173µs ± 0.124µs 161.306µs 161.641µs 162.129µs 163.866µs 1.67% 4.016 29.859 0.19% 0.021µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching string interning on wordpress profile execution_time [161.170µs; 161.253µs] or [-0.026%; +0.026%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time 495.299µs 496.163µs ± 0.742µs 496.068µs ± 0.261µs 496.366µs 496.860µs 497.270µs 504.762µs 1.75% 7.910 88.433 0.15% 0.052µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1981131.266op/s 2015470.597op/s ± 2979.200op/s 2015851.762op/s ± 1061.290op/s 2016844.574op/s 2018044.208op/s 2018603.567op/s 2018981.567op/s 0.16% -7.786 86.495 0.15% 210.661op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 370.757µs 371.511µs ± 0.312µs 371.494µs ± 0.233µs 371.736µs 371.994µs 372.240µs 372.916µs 0.38% 0.475 1.129 0.08% 0.022µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2681568.414op/s 2691709.400op/s ± 2260.882op/s 2691830.050op/s ± 1688.770op/s 2693398.057op/s 2695040.696op/s 2696102.736op/s 2697181.563op/s 0.20% -0.468 1.106 0.08% 159.868op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 168.528µs 168.901µs ± 0.165µs 168.890µs ± 0.101µs 168.988µs 169.223µs 169.346µs 169.391µs 0.30% 0.463 0.139 0.10% 0.012µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5903507.040op/s 5920636.236op/s ± 5794.224op/s 5921003.079op/s ± 3530.761op/s 5924504.862op/s 5929428.098op/s 5931651.171op/s 5933718.160op/s 0.21% -0.457 0.133 0.10% 409.713op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.823µs 37.017µs ± 0.111µs 37.027µs ± 0.101µs 37.103µs 37.179µs 37.270µs 37.283µs 0.69% 0.109 -1.164 0.30% 0.008µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26821987.927op/s 27014790.460op/s ± 81111.286op/s 27007511.195op/s ± 73656.130op/s 27099271.650op/s 27123531.983op/s 27135712.746op/s 27156573.419op/s 0.55% -0.101 -1.173 0.30% 5735.434op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 46.208µs 46.299µs ± 0.098µs 46.286µs ± 0.027µs 46.319µs 46.372µs 46.443µs 47.527µs 2.68% 9.959 121.654 0.21% 0.007µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21040532.340op/s 21598953.798op/s ± 44809.371op/s 21604692.151op/s ± 12741.646op/s 21616653.664op/s 21629507.821op/s 21636380.565op/s 21641063.748op/s 0.17% -9.804 119.027 0.21% 3168.501op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time [496.060µs; 496.266µs] or [-0.021%; +0.021%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2015057.709op/s; 2015883.486op/s] or [-0.020%; +0.020%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [371.468µs; 371.555µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2691396.063op/s; 2692022.736op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [168.878µs; 168.924µs] or [-0.014%; +0.014%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5919833.212op/s; 5921439.260op/s] or [-0.014%; +0.014%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.002µs; 37.032µs] or [-0.042%; +0.042%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27003549.216op/s; 27026031.704op/s] or [-0.042%; +0.042%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.285µs; 46.312µs] or [-0.029%; +0.029%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21592743.651op/s; 21605163.946op/s] or [-0.029%; +0.029%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
credit_card/is_card_number/ execution_time 3.900µs 3.915µs ± 0.002µs 3.915µs ± 0.001µs 3.916µs 3.919µs 3.920µs 3.922µs 0.18% -0.841 6.080 0.06% 0.000µs 1 200
credit_card/is_card_number/ throughput 254998112.715op/s 255449817.160op/s ± 159150.157op/s 255451183.296op/s ± 94077.487op/s 255546586.152op/s 255681755.211op/s 255721532.091op/s 256427884.299op/s 0.38% 0.854 6.163 0.06% 11253.616op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 79.159µs 79.874µs ± 0.424µs 79.806µs ± 0.287µs 80.099µs 80.645µs 81.097µs 81.830µs 2.54% 1.018 1.721 0.53% 0.030µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12220517.492op/s 12520046.788op/s ± 66162.050op/s 12530330.746op/s ± 45221.124op/s 12574443.101op/s 12607918.531op/s 12619855.910op/s 12632759.271op/s 0.82% -0.976 1.547 0.53% 4678.363op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 82.962µs 84.098µs ± 0.532µs 84.067µs ± 0.389µs 84.464µs 85.141µs 85.414µs 85.486µs 1.69% 0.390 -0.270 0.63% 0.038µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 11697841.414op/s 11891326.003op/s ± 75084.033op/s 11895246.709op/s ± 54923.086op/s 11947976.819op/s 12001208.072op/s 12038982.524op/s 12053765.059op/s 1.33% -0.361 -0.301 0.63% 5309.243op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.895µs 3.916µs ± 0.003µs 3.916µs ± 0.002µs 3.918µs 3.921µs 3.924µs 3.925µs 0.23% -0.683 5.547 0.09% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254794169.193op/s 255365278.621op/s ± 223275.111op/s 255382843.121op/s ± 142262.222op/s 255514366.295op/s 255652233.281op/s 255727732.216op/s 256718772.372op/s 0.52% 0.702 5.660 0.09% 15787.935op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 69.787µs 70.383µs ± 0.420µs 70.319µs ± 0.302µs 70.660µs 71.201µs 71.443µs 71.457µs 1.62% 0.680 -0.422 0.60% 0.030µs 1 200
credit_card/is_card_number/378282246310005 throughput 13994489.522op/s 14208542.813op/s ± 84445.118op/s 14220812.871op/s ± 61438.616op/s 14280571.348op/s 14312206.124op/s 14320499.623op/s 14329229.590op/s 0.76% -0.661 -0.460 0.59% 5971.172op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 53.052µs 53.129µs ± 0.041µs 53.123µs ± 0.025µs 53.155µs 53.186µs 53.231µs 53.371µs 0.47% 1.704 7.232 0.08% 0.003µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 18736908.329op/s 18822142.870op/s ± 14371.930op/s 18824282.149op/s ± 8800.702op/s 18832455.046op/s 18840503.480op/s 18844851.485op/s 18849579.260op/s 0.13% -1.689 7.134 0.08% 1016.249op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.428µs 6.440µs ± 0.005µs 6.440µs ± 0.004µs 6.444µs 6.449µs 6.452µs 6.453µs 0.21% 0.209 -0.681 0.08% 0.000µs 1 200
credit_card/is_card_number/x371413321323331 throughput 154958306.842op/s 155283688.224op/s ± 129051.028op/s 155289992.570op/s ± 100909.293op/s 155385867.709op/s 155473278.447op/s 155515815.467op/s 155569461.815op/s 0.18% -0.206 -0.682 0.08% 9125.286op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.898µs 3.916µs ± 0.003µs 3.915µs ± 0.002µs 3.918µs 3.921µs 3.923µs 3.925µs 0.25% -0.510 3.824 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254770741.745op/s 255377526.312op/s ± 209622.655op/s 255398327.142op/s ± 136343.761op/s 255517902.358op/s 255660399.075op/s 255725833.089op/s 256551222.300op/s 0.45% 0.524 3.893 0.08% 14822.560op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 64.936µs 65.168µs ± 0.153µs 65.122µs ± 0.091µs 65.246µs 65.478µs 65.641µs 65.716µs 0.91% 1.081 0.827 0.23% 0.011µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15217101.097op/s 15345029.175op/s ± 35883.549op/s 15355795.272op/s ± 21413.392op/s 15371943.901op/s 15385825.658op/s 15393965.686op/s 15399886.041op/s 0.29% -1.069 0.791 0.23% 2537.350op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 58.525µs 59.037µs ± 0.237µs 58.993µs ± 0.155µs 59.171µs 59.445µs 59.583µs 59.775µs 1.33% 0.508 -0.216 0.40% 0.017µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 16729372.290op/s 16938894.581op/s ± 67988.112op/s 16951229.623op/s ± 44372.038op/s 16991279.655op/s 17031831.733op/s 17063458.101op/s 17086824.993op/s 0.80% -0.490 -0.240 0.40% 4807.486op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.893µs 3.915µs ± 0.003µs 3.915µs ± 0.001µs 3.916µs 3.919µs 3.920µs 3.921µs 0.17% -2.162 18.687 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255030819.801op/s 255445383.690op/s ± 179896.332op/s 255457989.936op/s ± 93848.783op/s 255542170.847op/s 255649158.502op/s 255732038.735op/s 256883419.970op/s 0.56% 2.196 19.002 0.07% 12720.592op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 55.333µs 55.665µs ± 0.189µs 55.638µs ± 0.125µs 55.773µs 56.028µs 56.237µs 56.395µs 1.36% 1.098 1.475 0.34% 0.013µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 17732127.838op/s 17964889.766op/s ± 60862.807op/s 17973285.409op/s ± 40412.207op/s 18012562.412op/s 18038598.090op/s 18054405.670op/s 18072245.609op/s 0.55% -1.075 1.393 0.34% 4303.650op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 53.061µs 53.128µs ± 0.042µs 53.120µs ± 0.023µs 53.150µs 53.198µs 53.240µs 53.414µs 0.55% 2.004 9.998 0.08% 0.003µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 18721564.766op/s 18822307.622op/s ± 14738.147op/s 18825263.703op/s ± 8222.076op/s 18831873.814op/s 18840956.212op/s 18844963.097op/s 18846318.147op/s 0.11% -1.986 9.838 0.08% 1042.144op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.429µs 6.439µs ± 0.005µs 6.439µs ± 0.004µs 6.443µs 6.449µs 6.450µs 6.452µs 0.20% 0.314 -0.670 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 154996791.347op/s 155302146.082op/s ± 124513.060op/s 155311798.439op/s ± 95780.778op/s 155407875.295op/s 155476669.433op/s 155512467.254op/s 155553033.074op/s 0.16% -0.311 -0.673 0.08% 8804.403op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
credit_card/is_card_number/ execution_time [3.914µs; 3.915µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ throughput [255427760.479op/s; 255471873.842op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [79.815µs; 79.933µs] or [-0.074%; +0.074%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12510877.365op/s; 12529216.212op/s] or [-0.073%; +0.073%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [84.024µs; 84.172µs] or [-0.088%; +0.088%] None None None
credit_card/is_card_number/ 378282246310005 throughput [11880920.078op/s; 11901731.928op/s] or [-0.088%; +0.088%] None None None
credit_card/is_card_number/37828224631 execution_time [3.915µs; 3.916µs] or [-0.012%; +0.012%] None None None
credit_card/is_card_number/37828224631 throughput [255334334.838op/s; 255396222.404op/s] or [-0.012%; +0.012%] None None None
credit_card/is_card_number/378282246310005 execution_time [70.324µs; 70.441µs] or [-0.083%; +0.083%] None None None
credit_card/is_card_number/378282246310005 throughput [14196839.532op/s; 14220246.094op/s] or [-0.082%; +0.082%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [53.123µs; 53.135µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [18820151.059op/s; 18824134.681op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.439µs; 6.441µs] or [-0.012%; +0.012%] None None None
credit_card/is_card_number/x371413321323331 throughput [155265802.993op/s; 155301573.455op/s] or [-0.012%; +0.012%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.915µs; 3.916µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ throughput [255348474.628op/s; 255406577.995op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [65.147µs; 65.189µs] or [-0.032%; +0.032%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15340056.061op/s; 15350002.290op/s] or [-0.032%; +0.032%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [59.004µs; 59.070µs] or [-0.056%; +0.056%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [16929472.083op/s; 16948317.080op/s] or [-0.056%; +0.056%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.914µs; 3.915µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255420451.789op/s; 255470315.592op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [55.639µs; 55.691µs] or [-0.047%; +0.047%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [17956454.766op/s; 17973324.766op/s] or [-0.047%; +0.047%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [53.123µs; 53.134µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [18820265.057op/s; 18824350.188op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.438µs; 6.440µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [155284889.769op/s; 155319402.395op/s] or [-0.011%; +0.011%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_trace/test_trace execution_time 239.437ns 251.910ns ± 14.547ns 245.160ns ± 4.177ns 256.548ns 284.180ns 292.028ns 298.543ns 21.77% 1.505 1.160 5.76% 1.029ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_trace/test_trace execution_time [249.894ns; 253.926ns] or [-0.800%; +0.800%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
single_flag_killswitch/rules-based execution_time 190.789ns 193.149ns ± 2.105ns 192.851ns ± 1.413ns 194.075ns 197.015ns 200.123ns 202.595ns 5.05% 1.429 2.852 1.09% 0.149ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
single_flag_killswitch/rules-based execution_time [192.857ns; 193.441ns] or [-0.151%; +0.151%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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 1.187µs 3.205µs ± 1.616µs 2.966µs ± 0.027µs 2.992µs 3.646µs 14.158µs 18.730µs 531.47% 7.758 62.895 50.29% 0.114µ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.981µs; 3.429µs] or [-6.987%; +6.987%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample2_frames_x1000 execution_time 732.897µs 734.300µs ± 0.650µs 734.208µs ± 0.423µs 734.682µs 735.488µs 735.966µs 736.766µs 0.35% 0.588 0.556 0.09% 0.046µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample2_frames_x1000 execution_time [734.210µs; 734.390µs] or [-0.012%; +0.012%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
redis/obfuscate_redis_string execution_time 35.280µs 35.563µs ± 0.428µs 35.385µs ± 0.047µs 35.452µs 36.375µs 36.416µs 38.556µs 8.96% 2.717 11.075 1.20% 0.030µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
redis/obfuscate_redis_string execution_time [35.504µs; 35.623µs] or [-0.167%; +0.167%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
ip_address/quantize_peer_ip_address_benchmark execution_time 4.946µs 5.020µs ± 0.048µs 5.021µs ± 0.048µs 5.049µs 5.108µs 5.113µs 5.114µs 1.85% 0.258 -0.938 0.95% 0.003µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
ip_address/quantize_peer_ip_address_benchmark execution_time [5.014µs; 5.027µs] or [-0.132%; +0.132%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_frames_x1000 execution_time 4.133ms 4.159ms ± 0.009ms 4.161ms ± 0.001ms 4.163ms 4.166ms 4.168ms 4.169ms 0.18% -2.057 2.819 0.21% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_frames_x1000 execution_time [4.158ms; 4.160ms] or [-0.029%; +0.029%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
tags/replace_trace_tags execution_time 2.276µs 2.362µs ± 0.018µs 2.364µs ± 0.005µs 2.371µs 2.380µs 2.385µs 2.388µs 1.02% -2.639 7.682 0.76% 0.001µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
tags/replace_trace_tags execution_time [2.359µs; 2.364µs] or [-0.106%; +0.106%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching deserializing traces from msgpack to their internal representation execution_time 48.579ms 48.841ms ± 1.018ms 48.687ms ± 0.055ms 48.767ms 49.003ms 51.143ms 59.947ms 23.13% 9.223 89.432 2.08% 0.072ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching deserializing traces from msgpack to their internal representation execution_time [48.699ms; 48.982ms] or [-0.289%; +0.289%] None None None

Group 20

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching serializing traces from their internal representation to msgpack execution_time 13.922ms 13.974ms ± 0.030ms 13.969ms ± 0.013ms 13.983ms 14.028ms 14.086ms 14.144ms 1.25% 2.589 10.016 0.21% 0.002ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching serializing traces from their internal representation to msgpack execution_time [13.970ms; 13.978ms] or [-0.030%; +0.030%] None None None

Baseline

Omitted due to size.

@hoolioh hoolioh force-pushed the julio/opt-in-telemetry branch from e973616 to 32bfed2 Compare March 23, 2026 14:53
@hoolioh hoolioh changed the title Julio/opt in telemetry refactor(libdd-data-pipeline): feature gate telemetry Mar 24, 2026
@dd-octo-sts
Copy link
Copy Markdown
Contributor

dd-octo-sts bot commented Mar 24, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.70 MB 8.70 MB 0% (0 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 100.37 MB 100.38 MB +0% (+408 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 117.04 MB 117.04 MB -0% (-6.96 KB) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.28 MB 11.28 MB +0% (+40 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.18 MB 27.18 MB +0% (+512 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 77.50 KB 77.50 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 186.52 MB 186.55 MB +.01% (+24.00 KB) 🔍
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 917.79 MB 917.99 MB +.02% (+204.71 KB) 🔍
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.94 MB 9.94 MB +0% (+1.00 KB) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 77.50 KB 77.50 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 24.78 MB 24.78 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 51.47 MB 51.47 MB +0% (+3.52 KB) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 22.97 MB 22.97 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 78.71 KB 78.71 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 190.21 MB 190.32 MB +.05% (+112.00 KB) 🔍
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 900.94 MB 900.93 MB -0% (-3.25 KB) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.54 MB 7.54 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 78.71 KB 78.71 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.52 MB 26.52 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 47.09 MB 47.09 MB +0% (+490 B) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 87.59 MB 87.59 MB +0% (+1.35 KB) 👌
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.22 MB 10.23 MB +.03% (+4.00 KB) 🔍
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 109.92 MB 109.93 MB +0% (+6.69 KB) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.97 MB 11.97 MB -0% (-120 B) 👌

@hoolioh hoolioh marked this pull request as ready for review March 25, 2026 10:50
@hoolioh hoolioh requested review from a team as code owners March 25, 2026 10:50
use tracing::{debug, error};
#[cfg(feature = "telemetry")]
use tracing::debug;
#[allow(unused_imports)]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Only used in a special case?

Suggested change
#[allow(unused_imports)]
#[cfg(all(feature = "catch_panic", not(panic = "abort")))]

pub fn build(self, runtime: Handle) -> (TelemetryClient, worker::TelemetryWorker) {
#[allow(clippy::unwrap_used)]
let mut builder = TelemetryWorkerBuilder::new_fetch_host(
self.service_name.unwrap(),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Error handling?

assert!(builder.config.debug_enabled);
assert_eq!(
<String as AsRef<str>>::as_ref(&builder.config.endpoint().unwrap().url.to_string()),
"http://localhost/telemetry/proxy/api/v2/apmtelemetry"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is there a similar test somewhere?

Comment on lines +295 to 297
#[cfg(feature = "telemetry")]
#[no_mangle]
pub unsafe extern "C" fn ddog_trace_exporter_config_enable_telemetry(
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Not sure if we should feature gate it, instead of making it a no-op since it's part of the API

You could imagine that we have a language where we want to build a shared library.
The code in the language would probably look like this

if (!serverless) {
  ddog_trace_exporter_config_enable_telemetry();
}

if we feature gate this, we can't have this switch at rutime and force them to use macros

Comment on lines 2 to 4
// SPDX-License-Identifier: Apache-2.0

//! Telemetry provides a client to send results accumulated in 'Metrics'.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think that for this file where there are a lot of telemetry/not(telemetry) feature gate, doing something like this would be cleaner

#[cfg(feature = "telemetry")]
mod inner {
  //telemetry only imports, items
  struct SendPayloadTelemetry
  struct TelemetryClient
}

#[cfg(not(feature = "telemetry"))]
mod inner {
 // placeholder
}

use inner::*;

}
Ok(())
#[cfg(not(feature = "telemetry"))]
impl SendPayloadTelemetry {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is it possible to feature gate the whole telemetry module in libdd-data-pipeline and it's use in trace_exporter rather than creating no-op functions ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The fist try was using that approach but looking at the changes it seemed that the trace exporter was cluttered with #[cfg(feature)] statements which in the long run would be very hard to maintain, specially if we keep gating features. Also it keeps most of the changes in the module affected and lastly since feature statements only apply to the following block sometimes adding a new statement requires refactoring the original code.
Anyway I wanted to test this approach in order to discuss how it feels. Do you think is incovenient?

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants