Skip to content

ci(profiling): wire py3.15 into build matrix, riotfile, and CI - #19271

Closed
vlad-scherbich wants to merge 5 commits into
vlad/ddtracepy-315-profiling-collectorsfrom
vlad/ddtracepy-315-profiling-only
Closed

ci(profiling): wire py3.15 into build matrix, riotfile, and CI#19271
vlad-scherbich wants to merge 5 commits into
vlad/ddtracepy-315-profiling-collectorsfrom
vlad/ddtracepy-315-profiling-only

Conversation

@vlad-scherbich

@vlad-scherbich vlad-scherbich commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

prev: #19270 | next: #19272

Summary

Profiling CI matrix and setup.py gating. Replaces merged #19249.

Test plan

  • CI green on this branch
  • Stack merges cleanly into the next PR's base branch

Tracker

@datadog-datadog-prod-us1-2

datadog-datadog-prod-us1-2 Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Pipelines  Tests

Unblock PR with BitsAI

⚠️ Warnings

🚦 16 Pipeline jobs failed

DataDog/apm-reliability/dd-trace-py | build linux serverless: [amd64, cp315-cp315, v113741238-d2b8243-manylinux2014_x86_64, 1] — 🔧 Needs a code fix, caused by this PR

View in Datadog · View in GitLab

DataDog/apm-reliability/dd-trace-py | build linux serverless: [amd64, cp315-cp315, v126532274-233089d-musllinux_1_2_x86_64, 1] — 🔧 Needs a code fix, caused by this PR

View in Datadog · View in GitLab

DataDog/apm-reliability/dd-trace-py | build linux serverless: [arm64, cp315-cp315, v113741357-d2b8243-manylinux2014_aarch64, 1] — 🔧 Needs a code fix, caused by this PR

View in Datadog · View in GitLab

View all 16 failed jobs.

ℹ️ Info

No other issues found (see more)

🧪 All tests passed
❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 10fd21c | Docs | View more details | Give us feedback!

@pr-commenter

pr-commenter Bot commented Aug 21, 2026

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2026-08-21 18:13:16

Comparing candidate commit 10fd21c in PR branch vlad/ddtracepy-315-profiling-only with baseline commit 69baea3 in branch main.

📊 Benchmarking dashboard

Found 0 performance improvements and 9 performance regressions! Performance is the same for 612 metrics, 10 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:httppropagationextract-empty_headers

  • 🟥 execution_time [+150.030ns; +175.919ns] or [+14.447%; +16.939%]

scenario:httppropagationinject-ids_only

  • 🟥 execution_time [+1.534µs; +1.712µs] or [+7.886%; +8.798%]

scenario:iastaspects-rstrip_aspect

  • 🟥 execution_time [+52.275µs; +69.091µs] or [+13.721%; +18.134%]

scenario:iastaspects-stringio_noaspect

  • 🟥 execution_time [+27.275µs; +32.029µs] or [+8.237%; +9.673%]

scenario:iastaspectsospath-ospathbasename_aspect

  • 🟥 execution_time [+114.251µs; +123.778µs] or [+28.800%; +31.201%]

scenario:iastaspectssplit-rsplit_aspect

  • 🟥 execution_time [+18.690µs; +22.411µs] or [+12.825%; +15.378%]

scenario:span-start

  • 🟥 execution_time [+1.420ms; +1.578ms] or [+9.457%; +10.507%]

scenario:telemetryaddmetric-1-count-metric-1-times

  • 🟥 execution_time [+414.374ns; +450.884ns] or [+15.773%; +17.163%]

scenario:tracer-small

  • 🟥 execution_time [+29.772µs; +31.804µs] or [+8.890%; +9.497%]

Unstable benchmarks

These benchmarks have a confidence interval too wide to call a change; treat them as noise rather than signal.

scenario:coreapiscenario-context_with_data_listeners

  • unstable execution_time [-717.957ns; +766.601ns] or [-6.579%; +7.025%]

scenario:coreapiscenario-core_dispatch_1_listener

  • unstable execution_time [-28.936ns; +37.321ns] or [-4.715%; +6.081%]

scenario:coreapiscenario-core_dispatch_50_listeners

  • unstable execution_time [-1682.310ns; +1625.386ns] or [-9.892%; +9.557%]

scenario:coreapiscenario-core_dispatch_exception_listeners

  • unstable execution_time [-1366.713ns; +1174.590ns] or [-10.227%; +8.790%]

scenario:coreapiscenario-core_dispatch_listeners

  • unstable execution_time [-323.607ns; +326.632ns] or [-8.840%; +8.923%]

scenario:coreapiscenario-core_dispatch_no_args_listeners

  • unstable execution_time [-254.963ns; +247.532ns] or [-8.799%; +8.543%]

scenario:coreapiscenario-core_dispatch_with_results_1_listener

  • unstable execution_time [-67.140ns; +77.765ns] or [-5.954%; +6.896%]

scenario:coreapiscenario-core_dispatch_with_results_50_listeners

  • unstable execution_time [-4155.610ns; +3769.622ns] or [-10.269%; +9.315%]

scenario:coreapiscenario-core_dispatch_with_results_listeners

  • unstable execution_time [-812.878ns; +723.318ns] or [-10.055%; +8.947%]

scenario:packagesupdateimporteddependencies-import_many_stdlib_cached

  • unstable execution_time [-60403.286ns; +60522.079ns] or [-9.435%; +9.453%]

vlad-scherbich and others added 4 commits August 21, 2026 11:43
Allows version-specific native test binaries to install into a subdir
of the shared test/ directory (e.g. INSTALL_SUBDIR py315 -> test/py315/).

build_base_venvs runs in parallel across all Python versions and GitLab
merges all artifacts into a single directory for downstream jobs. Without
isolation a binary compiled for pyX.Y (RPATH -> libpythonX.Y) lands in
the shared test/ directory and crashes when the pytest gtest plugin tries
to run it against a different Python runtime.

Callers that do not pass INSTALL_SUBDIR are unaffected.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
# Conflicts:
#	ddtrace/internal/monitoring.py
#	ddtrace/internal/wrapping/asyncs.py
@vlad-scherbich
vlad-scherbich force-pushed the vlad/ddtracepy-315-profiling-collectors branch from 9ef0d6d to 6f9a44c Compare August 21, 2026 08:44
Profiling-native py3.15 job, setup.py guards, and crashtracker 3.15 opt-in.
Rebased onto the #17849 split stack (PR 17624).

# Conflicts:
#	riotfile.py
#	setup.py
@vlad-scherbich
vlad-scherbich force-pushed the vlad/ddtracepy-315-profiling-only branch from 6cf8030 to 10fd21c Compare August 21, 2026 17:43
@vlad-scherbich
vlad-scherbich force-pushed the vlad/ddtracepy-315-profiling-collectors branch from 6f9a44c to ee28a3f Compare August 21, 2026 18:43
@vlad-scherbich

Copy link
Copy Markdown
Contributor Author

Absorbed into consolidated profiling stack — see survivor PR in consolidation comment on the stack.

@vlad-scherbich

Copy link
Copy Markdown
Contributor Author

Closed: CI matrix / profiling-only wiring merged into #19270 (collectors + py3.15 CI matrix).

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant