Skip to content

benchmarks: remove SymDB benchmarks #5795

Merged
p-datadog merged 3 commits into
masterfrom
symdb-benchmarks-disable-in-ci
May 20, 2026
Merged

benchmarks: remove SymDB benchmarks #5795
p-datadog merged 3 commits into
masterfrom
symdb-benchmarks-disable-in-ci

Conversation

@p-datadog

@p-datadog p-datadog commented May 20, 2026

Copy link
Copy Markdown
Member

What does this PR do?

Removes SymDB benchmarks because they are broken.

Motivation:

Master is red:

The three scripts (symbol_database_extraction, symbol_database_background_impact, symbol_database_baseline_matrix) emit custom nested-dict result JSONs — extraction stats, RPS-drop curves by load tier, baseline vs treatment ops/sec. The stock benchmark-analyzer's converter expects the [{item: "...", samples: [<numbers>]}] shape and crashes with:

File ".../src/converter/benchmark_ips.py", line 31, in convert
    values = np.array([s for s in row["samples"]], dtype=np.float64),
TypeError: string indices must be integers

That crash happens after both candidate and baseline produce their JSONs, but before any comparison — so the entire microbenchmarks: [other] job goes red and nothing else in that batch (tracing, error_tracking, di_instrument, library_gem_loading) gets a comparison report either. PR #5784 (job 1699825413) is the most recent example.

Change log entry

None.

Additional Notes:

Re-enabling these benchmarks properly is a follow-up: reshape each script's output so each tracked measurement becomes its own item with per-rep samples, e.g.

[
  {"item": "symdb - rps_drop @ 99% load", "samples": [0.012, 0.011, 0.013, 0.012]},
  {"item": "symdb - extraction_wall_seconds_mean", "samples": [0.75, 0.74, 0.75, 0.76]},
  {"item": "symdb - memory_overhead_kb", "samples": [41088, 41200, 40996, 41152]}
]

Once the shape matches, the stock analyzer handles the comparison and PRs like #5784 (which removes the throttle as a regression-detection check) would surface RPS drops at high load as a normal significance report.

How to test the change?

  • yamllint passes on benchmarks/execution.yml
  • validate_benchmarks_spec.rb still passes (it loads each script; it does not depend on the script being listed in execution.yml)
  • After merge, watch the next dd-gitlab/microbenchmarks: [other] run: candidate/baseline produce JSONs only for the four remaining benchmarks; analyzer completes without crashing

The three SymDB benchmarks emit nested-dict result JSONs (extraction
stats, baseline-matrix RPS tiers, background-impact pre/treatment),
not the flat [{item, samples}] shape the benchmark-analyzer expects.
The converter crashes with TypeError before any candidate-vs-baseline
comparison happens, taking the entire microbenchmarks: [other] job
with it (e.g. dd-gitlab/microbenchmarks: [other] on PR #5784).

Removing them from the manifest disables CI execution but leaves the
benchmark scripts in place — they remain runnable locally for ad-hoc
measurement and are still validated by
spec/datadog/symbol_database/validate_benchmarks_spec.rb.

A proper re-enablement would reshape the scripts' JSON output to
[{item, samples}] so each measurement (e.g. rps_drop_at_99,
extraction_wall_seconds_mean, memory_overhead_kb) becomes its own
item compared per-rep across runs by the stock analyzer.
@p-datadog
p-datadog requested a review from a team as a code owner May 20, 2026 20:00
@p-datadog p-datadog added the AI Generated Largely based on code generated by an AI or LLM. This label is the same across all dd-trace-* repos label May 20, 2026
@dd-octo-sts dd-octo-sts Bot added the dev/testing Involves testing processes (e.g. RSpec) label May 20, 2026
@datadog-official

datadog-official Bot commented May 20, 2026

Copy link
Copy Markdown

Tests

🎉 All green!

🧪 All tests passed
❄️ No new flaky tests detected

🎯 Code Coverage (details)
Patch Coverage: 100.00%
Overall Coverage: 97.08% (-0.00%)

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

@pr-commenter

pr-commenter Bot commented May 20, 2026

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2026-05-20 21:00:09

Comparing candidate commit f46e6dc in PR branch symdb-benchmarks-disable-in-ci with baseline commit 07e4d7b in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 46 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 ----------------------------------'

p-ddsign added 2 commits May 20, 2026 16:27
The script's expect_in_fork validation in validate_benchmarks_spec.rb
times out on Ruby 3.0 (10s wait exhausted) — see Ruby 3.0 / build &
test (standard) [4] on PR #5795. The benchmark's output JSON is also
incompatible with the stock analyzer (the original reason for the
disable in #5795), so the script has no current consumer. Drop it
along with its entry in validate_benchmarks_spec.rb.

- Deleted benchmarks/symbol_database_baseline_matrix.rb
- Removed entry from spec/datadog/symbol_database/validate_benchmarks_spec.rb
  (the Dir glob in the all-benchmarks guard test now returns 2 files,
  matching the 2 remaining entries in benchmarks_to_validate)
Drop the last two SymDB benchmark scripts and their validate spec.
The scripts emit nested-dict result JSONs incompatible with the stock
benchmark-analyzer; they have no consumer until they are rewritten to
emit benchmark-ips-shaped output ([{item, samples}]). With all three
scripts gone, validate_benchmarks_spec.rb has nothing to validate.

- Deleted benchmarks/symbol_database_extraction.rb
- Deleted benchmarks/symbol_database_background_impact.rb
- Deleted spec/datadog/symbol_database/validate_benchmarks_spec.rb
- Removed the symbol_database_ entry from benchmarks/README.md
@p-datadog p-datadog changed the title benchmarks: disable SymDB benchmarks in microbenchmarks CI benchmarks: remove SymDB benchmarks May 20, 2026
@p-datadog
p-datadog merged commit 50fc341 into master May 20, 2026
309 of 310 checks passed
@p-datadog
p-datadog deleted the symdb-benchmarks-disable-in-ci branch May 20, 2026 21:13
@dd-octo-sts dd-octo-sts Bot added this to the 2.34.0 milestone May 20, 2026
p-datadog pushed a commit that referenced this pull request Jun 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI Generated Largely based on code generated by an AI or LLM. This label is the same across all dd-trace-* repos dev/testing Involves testing processes (e.g. RSpec)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants