Skip to content

feat(aiobs): add tracing hook for ray ml framework #14038

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 10 commits into from

Conversation

imran-at-datadog
Copy link

@imran-at-datadog imran-at-datadog commented Jul 16, 2025

Overview

This PR adds a tracing startup hook for the Ray ML Framework as described in MLOB-3238, which lays the groundwork for the Ray distributed AI training observability MVP.

The tracing hook can be passed to the ray start command via

PYTHONPATH=path/to/ddtrace ray start --head --tracing-startup-hook=ddtrace.aiobs.integrations.ray.tracer:setup_tracing

For example:

PYTHONPATH=/Users/imran.hendley/.pyenv/versions/3.12.8/envs/ray/lib/python3.12/site-packages ray start --head --tracing-startup-hook=ddtrace.aiobs.integrations.ray.tracer:setup_tracing

This instructs Ray to export Opentelemetry traces to Datadog agent via the startup hook in dd-trace-py. Those traces will in turn be streamed to the tracing API endpoint configured in the Datadog agent settings.

Motivation

As described in Distributed AI Observability Proposal we would like to provide comprehensive real-time monitoring and root cause analysis (RCA) for distributed training workloads to our customers. Specifically, for the 2025 Q3 MVP we would like to be able to collect and report training jobs and the trace, logs, and metrics associated with each job, and we would like report the status of each job including whether it was a success or failure. This PR provides initial functionality for exporting tracing via a Ray startup tracing hook. We will explore expanding this approach further to cover the remaining scope for the MVP backend.

Test plan

Build and install ddtrace with these changes. Before this PR lands and rolls out in a new release of ddtrace this could be achieved via the following steps:

Modify your Datadog Agent settings to point to staging adding your own Staging API keys in place of <staging_api_key>, but leave your existing run_path line and everything below at the bottom if you have it.

Download the hello.py script linked in MLOB-2922.

git clone -b imran-hendley/add-ray-tracing-hook --single-branch https://github.com/DataDog/dd-trace-py.git
pyenv install 3.12.8
pyenv virtualenv 3.12.8 ray-test
pyenv activate ray-test
pip install -U "ray[train]" torch torchvision
pip install opentelemetry-sdk
pip install ./dd-trace-py

export DD_SERVICE="my-ray-job"

PYTHONPATH=~/.pyenv/versions/3.12.8/envs/ray/lib/python3.12/site-packages ray start --head --tracing-startup-hook=ddtrace.aiobs.integrations.ray.tracer:setup_tracing

python hello.py

Set the time window to "Live Past 15 minutes" and search for "service:my-ray-job" in the Staging APM > Traces > Explorer search box at https://dd.datad0g.com/apm/traces and observe the list of traces captured from the toy training job kicked off in hello.py.

Screenshot 2025-07-16 at 5 03 11 PM

To test the fallback job name run:

ray stop
unset DD_SERVICE

PYTHONPATH=~/.pyenv/versions/3.12.8/envs/ray/lib/python3.12/site-packages ray start --head --tracing-startup-hook=ddtrace.aiobs.integrations.ray.tracer:setup_tracing

python hello.py

Then set the time window to "Live Past 15 minutes" and search for service:unspecified-ray-job in the Staging traces explorer search box.

Screenshot 2025-07-16 at 5 01 11 PM

Risk assessment

This is a low-risk change because we are adding a feature which must be invoked manually at this point and does not run by default.

Release Notes

This change lays the groundwork for an unrelease feature and does not affect public facing APIs, so no release notes are needed.

Documentation

Distributed AI Observability Proposal
[RFC] Distributed AI Observability

Checklist

  • PR author has checked that all the criteria below are met
  • The PR description includes an overview of the change
  • The PR description articulates the motivation for the change
  • The change includes tests OR the PR description describes a testing strategy
  • The PR description notes risks associated with the change, if any
  • Newly-added code is easy to change
  • The change follows the library release note guidelines
  • The change includes or references documentation updates if necessary
  • Backport labels are set (if applicable)

Reviewer Checklist

  • Reviewer has checked that all the criteria below are met
  • Title is accurate
  • All changes are related to the pull request's stated goal
  • Avoids breaking API changes
  • Testing strategy adequately addresses listed risks
  • Newly-added code is easy to change
  • Release note makes sense to a user of the library
  • If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment
  • Backport labels are set in a manner that is consistent with the release branch maintenance policy

Copy link
Contributor

github-actions bot commented Jul 16, 2025

CODEOWNERS have been resolved as:

ddtrace/_aiobs/__init__.py                                              @DataDog/apm-core-python
ddtrace/_aiobs/integrations/__init__.py                                 @DataDog/apm-core-python
ddtrace/_aiobs/integrations/ray/__init__.py                             @DataDog/apm-core-python
ddtrace/_aiobs/integrations/ray/tracer.py                               @DataDog/apm-core-python
.github/CODEOWNERS                                                      @DataDog/python-guild @DataDog/apm-core-python

Copy link
Contributor

github-actions bot commented Jul 16, 2025

Bootstrap import analysis

Comparison of import times between this PR and base.

Summary

The average import time from this PR is: 283 ± 4 ms.

The average import time from base is: 283 ± 3 ms.

The import time difference between this PR and base is: 0.2 ± 0.1 ms.

The difference is not statistically significant (z = 1.12).

Import time breakdown

The following import paths have shrunk:

ddtrace.auto 1.840 ms (0.65%)
ddtrace.bootstrap.sitecustomize 1.163 ms (0.41%)
ddtrace.bootstrap.preload 1.163 ms (0.41%)
ddtrace.internal.remoteconfig.client 0.605 ms (0.21%)
ddtrace 0.676 ms (0.24%)
ddtrace.internal._unpatched 0.030 ms (0.01%)
json 0.030 ms (0.01%)
json.decoder 0.030 ms (0.01%)
re 0.030 ms (0.01%)
enum 0.030 ms (0.01%)
types 0.030 ms (0.01%)

Copy link

@yshapiro-57 yshapiro-57 left a comment

Choose a reason for hiding this comment

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

This is excellent! Congratulations on getting your first PR in, @imran-at-datadog !

I would defer to the folks in the #apm-python channel on whether they would like tracer.py to live anywhere else in the repo. "Officially" distributed AI observability is not yet a separate team from LLM Observability, but we may be one day, and from that standpoint I agree with putting the file in ddtrace/aiobs instead of ddtrace/llmobs as you have done.

Would you be able to please also update CODEOWNERS, similar to #13770 , to make us the owners of aiobs so that you and I can review each other's future changes to tracer.py without needing to reach out to the Python tracer team?

And also, can you add the syntax for how you were able to pip install a locally built version of ddtrace to the PR description? I am not asking to nitpick, I genuinely don't remember if I ever have done this myself before.

@pr-commenter
Copy link

pr-commenter bot commented Jul 16, 2025

Benchmarks

Benchmark execution time: 2025-07-18 15:33:19

Comparing candidate commit 9a5e5d5 in PR branch imran-hendley/add-ray-tracing-hook with baseline commit cd24015 in branch main.

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

Copy link
Member

@brettlangdon brettlangdon left a comment

Choose a reason for hiding this comment

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

is it possible to add a test suite for this integration?

can we update CODEOWNERS to set the appropriate team for ddtrace/aiobs?

does this have to be done via OTel? any reason we don't want to support ddtrace-run ray ... ? we could probably support something like ray start --head --tracing-startup-hook=ddtrace.auto which would give you full instrumentation for all integrations, profiling, and etc.

the way this is set up now you wouldn't get any of our other integrations enabled.

@imran-at-datadog imran-at-datadog force-pushed the imran-hendley/add-ray-tracing-hook branch from ead0ed0 to dc22e14 Compare July 17, 2025 17:18
@imran-at-datadog
Copy link
Author

imran-at-datadog commented Jul 17, 2025

And also, can you add the syntax for how you were able to pip install a locally built version of ddtrace to the PR description? I am not asking to nitpick, I genuinely don't remember if I ever have done this myself before.

That's already in the instructions as pip install dd-trace-py - but I edited to pip install ./dd-trace-py to make it more explicit you're installing the directory you just cloned.

@imran-at-datadog imran-at-datadog requested a review from a team as a code owner July 17, 2025 17:54
@pr-commenter
Copy link

pr-commenter bot commented Jul 17, 2025

Performance SLOs

Performance SLOs

Benchmark execution time: 2025-07-18 19:58:30

Comparing candidate commit abe623e in branch imran-hendley/add-ray-tracing-hook with performance thresholds.

coreapiscenario-context_with_data_listeners

  • (unstable) execution_time seen in benchmark [13.120µs; 14.219µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.044MB; 29.112MB]; SLO is < 31.000MB

coreapiscenario-context_with_data_no_listeners

  • 🟩 execution_time seen in benchmark [3.713µs; 3.742µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

coreapiscenario-context_with_data_only_all_listeners

  • (unstable) execution_time seen in benchmark [13.122µs; 14.218µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

coreapiscenario-get_item_exists

  • 🟩 execution_time seen in benchmark [629.954ns; 635.359ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

coreapiscenario-get_item_missing

  • 🟩 execution_time seen in benchmark [679.379ns; 684.857ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

coreapiscenario-set_item

  • 🟩 execution_time seen in benchmark [24.527µs; 24.736µs]; SLO is < 30.000µs
  • 🟩 max_rss_usage seen in benchmark [29.084MB; 29.152MB]; SLO is < 31.000MB

djangosimple-appsec

  • 🟩 execution_time seen in benchmark [21.316ms; 21.389ms]; SLO is < 22.300ms
  • 🟩 max_rss_usage seen in benchmark [63.782MB; 63.935MB]; SLO is < 65.500MB

djangosimple-exception-replay-enabled

  • 🟩 execution_time seen in benchmark [1.354ms; 1.357ms]; SLO is < 1.450ms
  • 🟩 max_rss_usage seen in benchmark [63.446MB; 63.602MB]; SLO is < 65.500MB

djangosimple-iast

  • 🟩 execution_time seen in benchmark [21.282ms; 21.348ms]; SLO is < 22.250ms
  • 🟩 max_rss_usage seen in benchmark [63.782MB; 63.935MB]; SLO is < 65.500MB

djangosimple-profiler

  • 🟩 execution_time seen in benchmark [15.847ms; 16.009ms]; SLO is < 16.550ms
  • 🟩 max_rss_usage seen in benchmark [50.728MB; 50.860MB]; SLO is < 53.000MB

djangosimple-span-code-origin

  • 🟩 execution_time seen in benchmark [27.107ms; 27.191ms]; SLO is < 28.200ms
  • 🟩 max_rss_usage seen in benchmark [66.025MB; 66.153MB]; SLO is < 68.000MB

djangosimple-tracer

  • 🟩 execution_time seen in benchmark [21.338ms; 21.409ms]; SLO is < 22.700ms
  • 🟩 max_rss_usage seen in benchmark [63.732MB; 63.867MB]; SLO is < 65.500MB

djangosimple-tracer-and-profiler

  • 🟩 execution_time seen in benchmark [23.756ms; 23.837ms]; SLO is < 24.900ms
  • 🟩 max_rss_usage seen in benchmark [65.220MB; 65.288MB]; SLO is < 67.000MB

djangosimple-tracer-no-caches

  • 🟩 execution_time seen in benchmark [18.846ms; 18.915ms]; SLO is < 19.650ms
  • 🟩 max_rss_usage seen in benchmark [63.747MB; 63.890MB]; SLO is < 65.500MB

djangosimple-tracer-no-databases

  • 🟩 execution_time seen in benchmark [19.179ms; 19.246ms]; SLO is < 20.100ms
  • 🟩 max_rss_usage seen in benchmark [63.717MB; 63.842MB]; SLO is < 65.500MB

djangosimple-tracer-no-middleware

  • 🟩 execution_time seen in benchmark [21.125ms; 21.192ms]; SLO is < 22.500ms
  • 🟩 max_rss_usage seen in benchmark [63.717MB; 63.842MB]; SLO is < 65.500MB

djangosimple-tracer-no-templates

  • 🟩 execution_time seen in benchmark [21.121ms; 21.185ms]; SLO is < 22.250ms
  • 🟩 max_rss_usage seen in benchmark [63.747MB; 63.890MB]; SLO is < 65.500MB

errortrackingdjangosimple-errortracking-enabled-all

  • 🟩 execution_time seen in benchmark [18.493ms; 18.554ms]; SLO is < 19.850ms
  • 🟩 max_rss_usage seen in benchmark [63.732MB; 63.866MB]; SLO is < 65.500MB

errortrackingdjangosimple-errortracking-enabled-user

  • 🟩 execution_time seen in benchmark [18.644ms; 18.727ms]; SLO is < 19.400ms
  • 🟩 max_rss_usage seen in benchmark [63.747MB; 63.890MB]; SLO is < 65.500MB

errortrackingdjangosimple-tracer-enabled

  • 🟩 execution_time seen in benchmark [18.516ms; 18.614ms]; SLO is < 19.450ms
  • 🟩 max_rss_usage seen in benchmark [63.723MB; 63.865MB]; SLO is < 65.500MB

errortrackingflasksqli-errortracking-enabled-all

  • 🟩 execution_time seen in benchmark [2.116ms; 2.124ms]; SLO is < 2.300ms
  • 🟩 max_rss_usage seen in benchmark [51.501MB; 51.719MB]; SLO is < 53.000MB

errortrackingflasksqli-errortracking-enabled-user

  • 🟩 execution_time seen in benchmark [2.112ms; 2.117ms]; SLO is < 2.250ms
  • 🟩 max_rss_usage seen in benchmark [51.650MB; 51.805MB]; SLO is < 53.000MB

errortrackingflasksqli-tracer-enabled

  • 🟩 execution_time seen in benchmark [2.114ms; 2.122ms]; SLO is < 2.300ms
  • 🟩 max_rss_usage seen in benchmark [51.237MB; 51.392MB]; SLO is < 53.000MB

flasksimple-appsec-get

  • 🟩 execution_time seen in benchmark [4.621ms; 4.633ms]; SLO is < 4.750ms
  • 🟩 max_rss_usage seen in benchmark [63.081MB; 63.202MB]; SLO is < 64.000MB

flasksimple-appsec-post

  • 🟩 execution_time seen in benchmark [6.619ms; 6.630ms]; SLO is < 6.750ms
  • 🟩 max_rss_usage seen in benchmark [63.111MB; 63.247MB]; SLO is < 64.000MB

flasksimple-appsec-telemetry

  • 🟩 execution_time seen in benchmark [4.613ms; 4.624ms]; SLO is < 4.750ms
  • 🟩 max_rss_usage seen in benchmark [62.973MB; 63.129MB]; SLO is < 64.000MB

flasksimple-debugger

  • 🟩 execution_time seen in benchmark [1.851ms; 1.855ms]; SLO is < 2.000ms
  • 🟩 max_rss_usage seen in benchmark [42.074MB; 42.074MB]; SLO is < 44.000MB

flasksimple-iast-get

  • 🟩 execution_time seen in benchmark [1.861ms; 1.866ms]; SLO is < 2.000ms
  • 🟩 max_rss_usage seen in benchmark [44.455MB; 44.605MB]; SLO is < 45.000MB

flasksimple-profiler

  • 🟩 execution_time seen in benchmark [1.980ms; 1.985ms]; SLO is < 2.100ms
  • 🟩 max_rss_usage seen in benchmark [43.285MB; 43.459MB]; SLO is < 44.000MB

flasksimple-tracer

  • 🟩 execution_time seen in benchmark [3.381ms; 3.388ms]; SLO is < 3.650ms
  • 🟩 max_rss_usage seen in benchmark [51.425MB; 51.519MB]; SLO is < 53.000MB

flasksqli-appsec-enabled

  • 🟩 execution_time seen in benchmark [3.986ms; 4.001ms]; SLO is < 4.200ms
  • 🟩 max_rss_usage seen in benchmark [63.446MB; 63.602MB]; SLO is < 66.000MB

flasksqli-iast-enabled

  • 🟩 execution_time seen in benchmark [2.550ms; 2.571ms]; SLO is < 2.800ms
  • 🟩 max_rss_usage seen in benchmark [56.537MB; 56.631MB]; SLO is < 58.000MB

flasksqli-tracer-enabled

  • 🟩 execution_time seen in benchmark [2.107ms; 2.112ms]; SLO is < 2.250ms
  • 🟩 max_rss_usage seen in benchmark [51.237MB; 51.393MB]; SLO is < 53.000MB

httppropagationextract-all_styles_all_headers

  • 🟩 execution_time seen in benchmark [61.313µs; 61.673µs]; SLO is < 70.000µs
  • 🟩 max_rss_usage seen in benchmark [29.091MB; 29.184MB]; SLO is < 31.000MB

httppropagationextract-b3_headers

  • 🟩 execution_time seen in benchmark [9.958µs; 10.016µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.129MB; 29.264MB]; SLO is < 31.000MB

httppropagationextract-b3_single_headers

  • 🟩 execution_time seen in benchmark [8.934µs; 9.002µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.084MB; 29.152MB]; SLO is < 31.000MB

httppropagationextract-datadog_tracecontext_tracestate_not_propagated_on_trace_id_no_match

  • 🟩 execution_time seen in benchmark [52.681µs; 52.907µs]; SLO is < 60.000µs
  • 🟩 max_rss_usage seen in benchmark [29.114MB; 29.239MB]; SLO is < 31.000MB

httppropagationextract-datadog_tracecontext_tracestate_propagated_on_trace_id_match

  • 🟩 execution_time seen in benchmark [55.014µs; 55.571µs]; SLO is < 60.000µs
  • 🟩 max_rss_usage seen in benchmark [29.091MB; 29.184MB]; SLO is < 31.000MB

httppropagationextract-empty_headers

  • 🟩 execution_time seen in benchmark [1.582µs; 1.600µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.129MB; 29.264MB]; SLO is < 31.000MB

httppropagationextract-full_t_id_datadog_headers

  • 🟩 execution_time seen in benchmark [18.068µs; 18.257µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.091MB; 29.184MB]; SLO is < 31.000MB

httppropagationextract-invalid_priority_header

  • 🟩 execution_time seen in benchmark [6.557µs; 6.610µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.091MB; 29.184MB]; SLO is < 31.000MB

httppropagationextract-invalid_span_id_header

  • 🟩 execution_time seen in benchmark [6.555µs; 6.605µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.197MB; 29.353MB]; SLO is < 31.000MB

httppropagationextract-invalid_tags_header

  • 🟩 execution_time seen in benchmark [6.556µs; 6.592µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.144MB; 29.287MB]; SLO is < 31.000MB

httppropagationextract-invalid_trace_id_header

  • 🟩 execution_time seen in benchmark [6.521µs; 6.562µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.144MB; 29.287MB]; SLO is < 31.000MB

httppropagationextract-large_header_no_matches

  • 🟩 execution_time seen in benchmark [27.414µs; 27.549µs]; SLO is < 30.000µs
  • 🟩 max_rss_usage seen in benchmark [29.091MB; 29.184MB]; SLO is < 31.000MB

httppropagationextract-large_valid_headers_all

  • 🟩 execution_time seen in benchmark [28.602µs; 28.744µs]; SLO is < 40.000µs
  • 🟩 max_rss_usage seen in benchmark [29.101MB; 29.213MB]; SLO is < 31.000MB

httppropagationextract-medium_header_no_matches

  • 🟩 execution_time seen in benchmark [9.790µs; 9.840µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.129MB; 29.264MB]; SLO is < 31.000MB

httppropagationextract-medium_valid_headers_all

  • 🟩 execution_time seen in benchmark [11.203µs; 11.275µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.129MB; 29.264MB]; SLO is < 31.000MB

httppropagationextract-none_propagation_style

  • 🟩 execution_time seen in benchmark [1.674µs; 1.685µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.114MB; 29.239MB]; SLO is < 31.000MB

httppropagationextract-tracecontext_headers

  • 🟩 execution_time seen in benchmark [27.180µs; 27.404µs]; SLO is < 30.000µs
  • 🟩 max_rss_usage seen in benchmark [29.101MB; 29.213MB]; SLO is < 31.000MB

httppropagationextract-valid_headers_all

  • 🟩 execution_time seen in benchmark [6.524µs; 6.567µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.114MB; 29.239MB]; SLO is < 31.000MB

httppropagationextract-valid_headers_basic

  • 🟩 execution_time seen in benchmark [6.116µs; 6.150µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.091MB; 29.184MB]; SLO is < 31.000MB

httppropagationextract-wsgi_empty_headers

  • 🟩 execution_time seen in benchmark [1.594µs; 1.609µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.129MB; 29.264MB]; SLO is < 31.000MB

httppropagationextract-wsgi_invalid_priority_header

  • 🟩 execution_time seen in benchmark [6.648µs; 6.700µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.114MB; 29.239MB]; SLO is < 31.000MB

httppropagationextract-wsgi_invalid_span_id_header

  • 🟩 execution_time seen in benchmark [1.602µs; 1.619µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.091MB; 29.184MB]; SLO is < 31.000MB

httppropagationextract-wsgi_invalid_tags_header

  • 🟩 execution_time seen in benchmark [6.560µs; 6.594µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.058MB; 29.178MB]; SLO is < 31.000MB

httppropagationextract-wsgi_invalid_trace_id_header

  • 🟩 execution_time seen in benchmark [6.601µs; 6.646µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.091MB; 29.184MB]; SLO is < 31.000MB

httppropagationextract-wsgi_large_header_no_matches

  • 🟩 execution_time seen in benchmark [28.582µs; 28.753µs]; SLO is < 40.000µs
  • 🟩 max_rss_usage seen in benchmark [29.114MB; 29.239MB]; SLO is < 31.000MB

httppropagationextract-wsgi_large_valid_headers_all

  • 🟩 execution_time seen in benchmark [29.784µs; 29.976µs]; SLO is < 40.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

httppropagationextract-wsgi_medium_header_no_matches

  • 🟩 execution_time seen in benchmark [10.112µs; 10.173µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.101MB; 29.213MB]; SLO is < 31.000MB

httppropagationextract-wsgi_medium_valid_headers_all

  • 🟩 execution_time seen in benchmark [11.616µs; 11.666µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.114MB; 29.239MB]; SLO is < 31.000MB

httppropagationextract-wsgi_valid_headers_all

  • 🟩 execution_time seen in benchmark [6.580µs; 6.638µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.084MB; 29.152MB]; SLO is < 31.000MB

httppropagationextract-wsgi_valid_headers_basic

  • 🟩 execution_time seen in benchmark [6.060µs; 6.107µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.101MB; 29.213MB]; SLO is < 31.000MB

httppropagationinject-ids_only

  • 🟩 execution_time seen in benchmark [11.829µs; 11.915µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.101MB; 29.213MB]; SLO is < 31.000MB

httppropagationinject-with_all

  • 🟩 execution_time seen in benchmark [25.034µs; 25.273µs]; SLO is < 30.000µs
  • 🟩 max_rss_usage seen in benchmark [29.101MB; 29.213MB]; SLO is < 31.000MB

httppropagationinject-with_dd_origin

  • 🟩 execution_time seen in benchmark [16.825µs; 16.939µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.144MB; 29.287MB]; SLO is < 31.000MB

httppropagationinject-with_priority_and_origin

  • 🟩 execution_time seen in benchmark [18.927µs; 19.002µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.101MB; 29.213MB]; SLO is < 31.000MB

httppropagationinject-with_sampling_priority

  • 🟩 execution_time seen in benchmark [13.917µs; 13.993µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.161MB; 29.310MB]; SLO is < 31.000MB

httppropagationinject-with_tags

  • 🟩 execution_time seen in benchmark [18.083µs; 18.199µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.144MB; 29.287MB]; SLO is < 31.000MB

httppropagationinject-with_tags_invalid

  • 🟩 execution_time seen in benchmark [20.846µs; 21.065µs]; SLO is < 30.000µs
  • 🟩 max_rss_usage seen in benchmark [29.084MB; 29.152MB]; SLO is < 31.000MB

httppropagationinject-with_tags_max_size

  • 🟩 execution_time seen in benchmark [18.509µs; 18.622µs]; SLO is < 30.000µs
  • 🟩 max_rss_usage seen in benchmark [29.114MB; 29.239MB]; SLO is < 31.000MB

iast_aspects-re_expand_aspect

  • 🟩 execution_time seen in benchmark [33.118µs; 33.317µs]; SLO is < 40.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iast_aspects-re_expand_noaspect

  • 🟩 execution_time seen in benchmark [28.621µs; 28.895µs]; SLO is < 40.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iast_aspects-re_findall_aspect

  • 🟩 execution_time seen in benchmark [3.726µs; 3.753µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iast_aspects-re_findall_noaspect

  • 🟩 execution_time seen in benchmark [1.419µs; 1.431µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iast_aspects-re_finditer_aspect

  • 🟩 execution_time seen in benchmark [5.115µs; 5.148µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.606MB; 34.718MB]; SLO is < 35.000MB

iast_aspects-re_finditer_noaspect

  • 🟩 execution_time seen in benchmark [1.411µs; 1.424µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iast_aspects-re_fullmatch_aspect

  • 🟩 execution_time seen in benchmark [3.374µs; 3.403µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.606MB; 34.718MB]; SLO is < 35.000MB

iast_aspects-re_fullmatch_noaspect

  • 🟩 execution_time seen in benchmark [1.286µs; 1.299µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iast_aspects-re_group_aspect

  • 🟩 execution_time seen in benchmark [3.466µs; 3.491µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iast_aspects-re_group_noaspect

  • 🟩 execution_time seen in benchmark [1.598µs; 1.621µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iast_aspects-re_groups_aspect

  • 🟩 execution_time seen in benchmark [3.562µs; 3.592µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iast_aspects-re_groups_noaspect

  • 🟩 execution_time seen in benchmark [1.693µs; 1.712µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iast_aspects-re_match_aspect

  • 🟩 execution_time seen in benchmark [3.396µs; 3.424µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iast_aspects-re_match_noaspect

  • 🟩 execution_time seen in benchmark [1.297µs; 1.306µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iast_aspects-re_search_aspect

  • 🟩 execution_time seen in benchmark [3.278µs; 3.304µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iast_aspects-re_search_noaspect

  • 🟩 execution_time seen in benchmark [1.200µs; 1.212µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iast_aspects-re_sub_aspect

  • 🟩 execution_time seen in benchmark [4.673µs; 4.699µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iast_aspects-re_sub_noaspect

  • 🟩 execution_time seen in benchmark [1.520µs; 1.533µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iast_aspects-re_subn_aspect

  • 🟩 execution_time seen in benchmark [4.890µs; 4.917µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.500MB

iast_aspects-re_subn_noaspect

  • 🟩 execution_time seen in benchmark [1.605µs; 1.622µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-add_aspect

  • 🟩 execution_time seen in benchmark [322.037ns; 325.693ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspects-add_inplace_aspect

  • 🟩 execution_time seen in benchmark [329.457ns; 333.439ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspects-add_inplace_noaspect

  • 🟩 execution_time seen in benchmark [315.007ns; 319.010ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-add_noaspect

  • 🟩 execution_time seen in benchmark [271.991ns; 275.785ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-bytearray_aspect

  • 🟩 execution_time seen in benchmark [1.838µs; 1.849µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-bytearray_extend_aspect

  • 🟩 execution_time seen in benchmark [1.377µs; 1.391µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-bytearray_extend_noaspect

  • 🟩 execution_time seen in benchmark [608.932ns; 613.430ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-bytearray_noaspect

  • 🟩 execution_time seen in benchmark [476.884ns; 481.282ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-bytes_aspect

  • 🟩 execution_time seen in benchmark [1.859µs; 1.875µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspects-bytes_noaspect

  • 🟩 execution_time seen in benchmark [490.183ns; 493.770ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-bytesio_aspect

  • 🟩 execution_time seen in benchmark [1.870µs; 1.883µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-bytesio_noaspect

  • 🟩 execution_time seen in benchmark [494.285ns; 496.593ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.606MB; 34.718MB]; SLO is < 35.000MB

iastaspects-capitalize_aspect

  • 🟩 execution_time seen in benchmark [734.479ns; 739.788ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-capitalize_noaspect

  • 🟩 execution_time seen in benchmark [432.385ns; 436.767ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-casefold_aspect

  • 🟩 execution_time seen in benchmark [727.571ns; 732.159ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspects-casefold_noaspect

  • 🟩 execution_time seen in benchmark [364.914ns; 371.877ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspects-decode_aspect

  • 🟩 execution_time seen in benchmark [721.148ns; 728.237ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-decode_noaspect

  • 🟩 execution_time seen in benchmark [417.222ns; 421.760ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-encode_aspect

  • 🟩 execution_time seen in benchmark [708.091ns; 715.136ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-encode_noaspect

  • 🟩 execution_time seen in benchmark [401.108ns; 404.621ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspects-format_aspect

  • 🟩 execution_time seen in benchmark [3.477µs; 3.506µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-format_map_aspect

  • 🟩 execution_time seen in benchmark [3.722µs; 3.764µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-format_map_noaspect

  • 🟩 execution_time seen in benchmark [771.773ns; 779.415ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-format_noaspect

  • 🟩 execution_time seen in benchmark [594.120ns; 601.138ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspects-index_aspect

  • 🟩 execution_time seen in benchmark [337.313ns; 340.378ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.606MB; 34.718MB]; SLO is < 35.000MB

iastaspects-index_noaspect

  • 🟩 execution_time seen in benchmark [273.118ns; 276.717ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-join_aspect

  • 🟩 execution_time seen in benchmark [1.221µs; 1.233µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-join_noaspect

  • 🟩 execution_time seen in benchmark [489.190ns; 494.352ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-ljust_aspect

  • 🟩 execution_time seen in benchmark [10.309µs; 10.356µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [34.634MB; 34.769MB]; SLO is < 35.500MB

iastaspects-ljust_noaspect

  • 🟩 execution_time seen in benchmark [401.515ns; 405.863ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.500MB

iastaspects-lower_aspect

  • 🟩 execution_time seen in benchmark [2.204µs; 2.217µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.500MB

iastaspects-lower_noaspect

  • 🟩 execution_time seen in benchmark [363.281ns; 367.150ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-lstrip_aspect

  • 🟩 execution_time seen in benchmark [10.402µs; 10.490µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [34.684MB; 34.837MB]; SLO is < 35.500MB

iastaspects-lstrip_noaspect

  • 🟩 execution_time seen in benchmark [376.212ns; 379.771ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-modulo_aspect

  • 🟩 execution_time seen in benchmark [574.398ns; 580.677ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-modulo_aspect_for_bytearray_bytearray

  • 🟩 execution_time seen in benchmark [1.244µs; 1.255µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-modulo_aspect_for_bytes

  • 🟩 execution_time seen in benchmark [745.598ns; 752.227ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-modulo_aspect_for_bytes_bytearray

  • 🟩 execution_time seen in benchmark [954.632ns; 966.265ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-modulo_noaspect

  • 🟩 execution_time seen in benchmark [625.741ns; 633.197ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspects-replace_aspect

  • 🟩 execution_time seen in benchmark [4.731µs; 4.759µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-replace_noaspect

  • 🟩 execution_time seen in benchmark [461.546ns; 466.514ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.500MB

iastaspects-repr_aspect

  • 🟩 execution_time seen in benchmark [905.968ns; 914.023ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-repr_noaspect

  • 🟩 execution_time seen in benchmark [408.954ns; 414.738ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-rstrip_aspect

  • 🟩 execution_time seen in benchmark [10.307µs; 10.351µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [34.649MB; 34.792MB]; SLO is < 35.500MB

iastaspects-rstrip_noaspect

  • 🟩 execution_time seen in benchmark [377.169ns; 382.444ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-slice_aspect

  • 🟩 execution_time seen in benchmark [478.478ns; 482.800ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-slice_noaspect

  • 🟩 execution_time seen in benchmark [441.193ns; 445.196ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-stringio_aspect

  • 🟩 execution_time seen in benchmark [2.200µs; 2.217µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspects-stringio_noaspect

  • 🟩 execution_time seen in benchmark [718.656ns; 728.441ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-strip_aspect

  • 🟩 execution_time seen in benchmark [10.463µs; 10.587µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [34.634MB; 34.769MB]; SLO is < 35.500MB

iastaspects-strip_noaspect

  • 🟩 execution_time seen in benchmark [384.784ns; 390.908ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-swapcase_aspect

  • 🟩 execution_time seen in benchmark [2.417µs; 2.437µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-swapcase_noaspect

  • 🟩 execution_time seen in benchmark [532.479ns; 536.865ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspects-title_aspect

  • 🟩 execution_time seen in benchmark [2.364µs; 2.378µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-title_noaspect

  • 🟩 execution_time seen in benchmark [500.128ns; 503.855ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-translate_aspect

  • 🟩 execution_time seen in benchmark [3.280µs; 3.303µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-translate_noaspect

  • 🟩 execution_time seen in benchmark [1.037µs; 1.044µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspects-upper_aspect

  • 🟩 execution_time seen in benchmark [2.218µs; 2.239µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspects-upper_noaspect

  • 🟩 execution_time seen in benchmark [366.107ns; 369.657ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspectsospath-ospathbasename_aspect

  • 🟩 execution_time seen in benchmark [4.913µs; 5.062µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspectsospath-ospathbasename_noaspect

  • 🟩 execution_time seen in benchmark [1.094µs; 1.104µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspectsospath-ospathjoin_aspect

  • 🟩 execution_time seen in benchmark [6.092µs; 6.124µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspectsospath-ospathjoin_noaspect

  • 🟩 execution_time seen in benchmark [2.292µs; 2.313µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspectsospath-ospathnormcase_aspect

  • 🟩 execution_time seen in benchmark [3.513µs; 3.541µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspectsospath-ospathnormcase_noaspect

  • 🟩 execution_time seen in benchmark [570.753ns; 577.334ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspectsospath-ospathsplit_aspect

  • 🟩 execution_time seen in benchmark [4.843µs; 4.885µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspectsospath-ospathsplit_noaspect

  • 🟩 execution_time seen in benchmark [1.590µs; 1.599µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspectsospath-ospathsplitdrive_aspect

  • 🟩 execution_time seen in benchmark [3.663µs; 3.721µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspectsospath-ospathsplitdrive_noaspect

  • 🟩 execution_time seen in benchmark [693.737ns; 698.180ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspectsospath-ospathsplitext_aspect

  • 🟩 execution_time seen in benchmark [4.527µs; 4.555µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspectsospath-ospathsplitext_noaspect

  • 🟩 execution_time seen in benchmark [1.382µs; 1.391µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.603MB; 34.603MB]; SLO is < 35.000MB

iastaspectssplit-rsplit_aspect

  • 🟩 execution_time seen in benchmark [1.460µs; 1.482µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspectssplit-rsplit_noaspect

  • 🟩 execution_time seen in benchmark [576.788ns; 582.772ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspectssplit-split_aspect

  • 🟩 execution_time seen in benchmark [1.441µs; 1.457µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastaspectssplit-split_noaspect

  • 🟩 execution_time seen in benchmark [569.260ns; 575.088ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.606MB; 34.718MB]; SLO is < 35.000MB

iastaspectssplit-splitlines_aspect

  • 🟩 execution_time seen in benchmark [1.418µs; 1.428µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.589MB; 34.657MB]; SLO is < 35.000MB

iastaspectssplit-splitlines_noaspect

  • 🟩 execution_time seen in benchmark [579.196ns; 584.720ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastpropagation-no-propagation

  • 🟩 execution_time seen in benchmark [48.590µs; 48.713µs]; SLO is < 60.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.500MB

iastpropagation-propagation_enabled

  • 🟩 execution_time seen in benchmark [144.304µs; 145.178µs]; SLO is < 160.000µs
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.500MB

iastpropagation-propagation_enabled_100

  • 🟩 execution_time seen in benchmark [1.553ms; 1.570ms]; SLO is < 1.800ms
  • 🟩 max_rss_usage seen in benchmark [34.596MB; 34.689MB]; SLO is < 35.000MB

iastpropagation-propagation_enabled_1000

  • 🟩 execution_time seen in benchmark [29.736ms; 29.897ms]; SLO is < 30.550ms
  • 🟩 max_rss_usage seen in benchmark [34.619MB; 34.744MB]; SLO is < 35.500MB

otelsdkspan-add-event

  • 🟩 execution_time seen in benchmark [40.955ms; 41.189ms]; SLO is < 42.000ms
  • 🟩 max_rss_usage seen in benchmark [31.836MB; 31.904MB]; SLO is < 35.000MB

otelsdkspan-add-link

  • 🟩 execution_time seen in benchmark [36.200ms; 36.414ms]; SLO is < 38.550ms
  • 🟩 max_rss_usage seen in benchmark [31.850MB; 31.850MB]; SLO is < 35.000MB

otelsdkspan-add-metrics

  • 🟩 execution_time seen in benchmark [217.429ms; 219.595ms]; SLO is < 232.000ms
  • 🟩 max_rss_usage seen in benchmark [31.850MB; 31.850MB]; SLO is < 35.000MB

otelsdkspan-add-tags

  • 🟩 execution_time seen in benchmark [210.278ms; 211.503ms]; SLO is < 221.600ms
  • 🟩 max_rss_usage seen in benchmark [31.850MB; 31.850MB]; SLO is < 35.000MB

otelsdkspan-get-context

  • 🟩 execution_time seen in benchmark [29.035ms; 29.189ms]; SLO is < 31.300ms
  • 🟩 max_rss_usage seen in benchmark [31.850MB; 31.850MB]; SLO is < 35.000MB

otelsdkspan-is-recording

  • 🟩 execution_time seen in benchmark [29.078ms; 29.298ms]; SLO is < 31.000ms
  • 🟩 max_rss_usage seen in benchmark [31.850MB; 31.850MB]; SLO is < 35.000MB

otelsdkspan-record-exception

  • 🟩 execution_time seen in benchmark [62.847ms; 63.131ms]; SLO is < 65.850ms
  • 🟩 max_rss_usage seen in benchmark [31.836MB; 31.904MB]; SLO is < 35.000MB

otelsdkspan-set-status

  • 🟩 execution_time seen in benchmark [31.886ms; 32.063ms]; SLO is < 34.150ms
  • 🟩 max_rss_usage seen in benchmark [31.850MB; 31.850MB]; SLO is < 35.000MB

otelsdkspan-start

  • 🟩 execution_time seen in benchmark [28.728ms; 28.932ms]; SLO is < 30.150ms
  • 🟩 max_rss_usage seen in benchmark [31.836MB; 31.904MB]; SLO is < 35.000MB

otelsdkspan-start-finish

  • 🟩 execution_time seen in benchmark [33.786ms; 33.999ms]; SLO is < 35.350ms
  • 🟩 max_rss_usage seen in benchmark [31.850MB; 31.850MB]; SLO is < 35.000MB

otelsdkspan-start-finish-telemetry

  • 🟩 execution_time seen in benchmark [33.953ms; 34.289ms]; SLO is < 35.450ms
  • 🟩 max_rss_usage seen in benchmark [31.850MB; 31.850MB]; SLO is < 35.000MB

otelsdkspan-update-name

  • 🟩 execution_time seen in benchmark [30.843ms; 31.025ms]; SLO is < 33.400ms
  • 🟩 max_rss_usage seen in benchmark [31.836MB; 31.904MB]; SLO is < 35.000MB

otelspan-add-event

  • 🟩 execution_time seen in benchmark [43.905ms; 44.149ms]; SLO is < 47.150ms
  • 🟩 max_rss_usage seen in benchmark [42.085MB; 42.241MB]; SLO is < 42.500MB

otelspan-add-metrics

  • 🟩 execution_time seen in benchmark [317.665ms; 320.101ms]; SLO is < 344.800ms
  • 🟩 max_rss_usage seen in benchmark [558.985MB; 558.985MB]; SLO is < 562.000MB

otelspan-add-tags

  • 🟩 execution_time seen in benchmark [288.093ms; 290.366ms]; SLO is < 314.000ms
  • 🟩 max_rss_usage seen in benchmark [559.727MB; 559.727MB]; SLO is < 563.500MB

otelspan-get-context

  • 🟩 execution_time seen in benchmark [84.108ms; 85.289ms]; SLO is < 92.350ms
  • 🟩 max_rss_usage seen in benchmark [37.130MB; 37.275MB]; SLO is < 38.000MB

otelspan-is-recording

  • 🟩 execution_time seen in benchmark [41.496ms; 41.690ms]; SLO is < 44.500ms
  • 🟩 max_rss_usage seen in benchmark [41.481MB; 41.650MB]; SLO is < 42.000MB

otelspan-record-exception

  • 🟩 execution_time seen in benchmark [61.098ms; 62.268ms]; SLO is < 67.650ms
  • 🟩 max_rss_usage seen in benchmark [37.620MB; 37.769MB]; SLO is < 38.000MB

otelspan-set-status

  • 🟩 execution_time seen in benchmark [47.323ms; 47.556ms]; SLO is < 50.400ms
  • 🟩 max_rss_usage seen in benchmark [41.439MB; 41.609MB]; SLO is < 42.000MB

otelspan-start

  • 🟩 execution_time seen in benchmark [41.497ms; 41.712ms]; SLO is < 43.450ms
  • 🟩 max_rss_usage seen in benchmark [41.385MB; 41.542MB]; SLO is < 42.000MB

otelspan-start-finish

  • 🟩 execution_time seen in benchmark [80.915ms; 81.490ms]; SLO is < 86.000ms
  • 🟩 max_rss_usage seen in benchmark [31.596MB; 31.751MB]; SLO is < 32.000MB

otelspan-start-finish-telemetry

  • 🟩 execution_time seen in benchmark [83.959ms; 84.295ms]; SLO is < 86.000ms
  • 🟩 max_rss_usage seen in benchmark [31.521MB; 31.669MB]; SLO is < 32.000MB

otelspan-update-name

  • 🟩 execution_time seen in benchmark [42.839ms; 43.028ms]; SLO is < 45.150ms
  • 🟩 max_rss_usage seen in benchmark [41.802MB; 41.963MB]; SLO is < 42.500MB

packagespackageforrootmodulemapping-cache_off

  • 🟩 execution_time seen in benchmark [342.975ms; 344.016ms]; SLO is < 354.300ms
  • 🟩 max_rss_usage seen in benchmark [35.302MB; 35.380MB]; SLO is < 38.000MB

packagespackageforrootmodulemapping-cache_on

  • 🟩 execution_time seen in benchmark [381.884ns; 385.764ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [33.647MB; 33.686MB]; SLO is < 38.000MB

packagesupdateimporteddependencies-import_many

  • 🟩 execution_time seen in benchmark [154.763µs; 155.495µs]; SLO is < 170.000µs
  • 🟩 max_rss_usage seen in benchmark [33.817MB; 33.890MB]; SLO is < 35.500MB

packagesupdateimporteddependencies-import_many_cached

  • 🟩 execution_time seen in benchmark [120.604µs; 121.872µs]; SLO is < 130.000µs
  • 🟩 max_rss_usage seen in benchmark [33.920MB; 33.936MB]; SLO is < 35.500MB

packagesupdateimporteddependencies-import_many_stdlib

  • 🟩 execution_time seen in benchmark [1.606ms; 1.628ms]; SLO is < 1.750ms
  • 🟩 max_rss_usage seen in benchmark [33.987MB; 34.061MB]; SLO is < 35.500MB

packagesupdateimporteddependencies-import_many_stdlib_cached

  • 🟩 execution_time seen in benchmark [951.953µs; 972.366µs]; SLO is < 1.100ms
  • 🟩 max_rss_usage seen in benchmark [33.947MB; 34.042MB]; SLO is < 35.500MB

packagesupdateimporteddependencies-import_many_unknown

  • 🟩 execution_time seen in benchmark [828.542µs; 833.897µs]; SLO is < 890.000µs
  • 🟩 max_rss_usage seen in benchmark [34.052MB; 34.087MB]; SLO is < 35.500MB

packagesupdateimporteddependencies-import_many_unknown_cached

  • 🟩 execution_time seen in benchmark [784.010µs; 788.067µs]; SLO is < 870.000µs
  • 🟩 max_rss_usage seen in benchmark [33.943MB; 34.024MB]; SLO is < 35.500MB

packagesupdateimporteddependencies-import_one

  • 🟩 execution_time seen in benchmark [19.632µs; 19.775µs]; SLO is < 30.000µs
  • 🟩 max_rss_usage seen in benchmark [34.033MB; 34.041MB]; SLO is < 35.500MB

packagesupdateimporteddependencies-import_one_cache

  • 🟩 execution_time seen in benchmark [6.248µs; 6.293µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [33.893MB; 33.913MB]; SLO is < 35.500MB

packagesupdateimporteddependencies-import_one_stdlib

  • 🟩 execution_time seen in benchmark [18.614µs; 18.702µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [33.902MB; 33.942MB]; SLO is < 35.500MB

packagesupdateimporteddependencies-import_one_stdlib_cache

  • 🟩 execution_time seen in benchmark [6.252µs; 6.284µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [33.851MB; 33.894MB]; SLO is < 35.500MB

packagesupdateimporteddependencies-import_one_unknown

  • 🟩 execution_time seen in benchmark [45.187µs; 45.577µs]; SLO is < 50.000µs
  • 🟩 max_rss_usage seen in benchmark [33.822MB; 33.838MB]; SLO is < 35.500MB

packagesupdateimporteddependencies-import_one_unknown_cache

  • 🟩 execution_time seen in benchmark [6.270µs; 6.302µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [33.852MB; 33.894MB]; SLO is < 35.500MB

ratelimiter-defaults

  • 🟩 execution_time seen in benchmark [2.346µs; 2.360µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [28.619MB; 28.712MB]; SLO is < 31.000MB

ratelimiter-high_rate_limit

  • 🟩 execution_time seen in benchmark [2.414µs; 2.432µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [28.697MB; 28.791MB]; SLO is < 31.000MB

ratelimiter-long_window

  • 🟩 execution_time seen in benchmark [2.332µs; 2.349µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [28.697MB; 28.791MB]; SLO is < 31.000MB

ratelimiter-low_rate_limit

  • 🟩 execution_time seen in benchmark [2.370µs; 2.390µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [28.708MB; 28.819MB]; SLO is < 31.000MB

ratelimiter-no_rate_limit

  • 🟩 execution_time seen in benchmark [824.619ns; 834.852ns]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [28.651MB; 28.719MB]; SLO is < 31.000MB

ratelimiter-short_window

  • 🟩 execution_time seen in benchmark [2.505µs; 2.521µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [28.697MB; 28.791MB]; SLO is < 31.000MB

recursivecomputation-deep

  • 🟩 execution_time seen in benchmark [308.598ms; 309.560ms]; SLO is < 320.950ms
  • 🟩 max_rss_usage seen in benchmark [30.192MB; 30.285MB]; SLO is < 31.000MB

recursivecomputation-deep-profiled

  • 🟩 execution_time seen in benchmark [343.325ms; 344.206ms]; SLO is < 359.150ms
  • 🟩 max_rss_usage seen in benchmark [34.533MB; 34.673MB]; SLO is < 35.500MB

recursivecomputation-medium

  • 🟩 execution_time seen in benchmark [7.011ms; 7.033ms]; SLO is < 7.400ms
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

recursivecomputation-shallow

  • 🟩 execution_time seen in benchmark [938.297µs; 944.553µs]; SLO is < 1.050ms
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

samplingrules-average_match

  • 🟩 execution_time seen in benchmark [332.347µs; 333.708µs]; SLO is < 350.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

samplingrules-high_match

  • 🟩 execution_time seen in benchmark [500.293µs; 503.361µs]; SLO is < 550.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

samplingrules-low_match

  • 🟩 execution_time seen in benchmark [169.000µs; 169.946µs]; SLO is < 190.000µs
  • 🟩 max_rss_usage seen in benchmark [431.751MB; 431.751MB]; SLO is < 432.500MB

samplingrules-very_low_match

  • 🟩 execution_time seen in benchmark [8.587ms; 8.632ms]; SLO is < 9.150ms
  • 🟩 max_rss_usage seen in benchmark [54.833MB; 54.883MB]; SLO is < 55.000MB

sethttpmeta-all-disabled

  • 🟩 execution_time seen in benchmark [12.111µs; 12.206µs]; SLO is < 20.000µs
  • 🟩 max_rss_usage seen in benchmark [29.484MB; 29.577MB]; SLO is < 31.000MB

sethttpmeta-all-enabled

  • 🟩 execution_time seen in benchmark [42.296µs; 42.572µs]; SLO is < 50.000µs
  • 🟩 max_rss_usage seen in benchmark [29.477MB; 29.545MB]; SLO is < 31.000MB

sethttpmeta-collectipvariant_exists

  • 🟩 execution_time seen in benchmark [42.786µs; 42.973µs]; SLO is < 50.000µs
  • 🟩 max_rss_usage seen in benchmark [29.477MB; 29.545MB]; SLO is < 31.000MB

sethttpmeta-no-collectipvariant

  • 🟩 execution_time seen in benchmark [42.503µs; 42.792µs]; SLO is < 50.000µs
  • 🟩 max_rss_usage seen in benchmark [29.491MB; 29.491MB]; SLO is < 31.000MB

sethttpmeta-no-useragentvariant

  • 🟩 execution_time seen in benchmark [41.342µs; 41.592µs]; SLO is < 50.000µs
  • 🟩 max_rss_usage seen in benchmark [29.491MB; 29.491MB]; SLO is < 31.000MB

sethttpmeta-obfuscation-no-query

  • 🟩 execution_time seen in benchmark [42.503µs; 42.729µs]; SLO is < 50.000µs
  • 🟩 max_rss_usage seen in benchmark [29.484MB; 29.577MB]; SLO is < 31.000MB

sethttpmeta-obfuscation-regular-case-explicit-query

  • 🟩 execution_time seen in benchmark [78.877µs; 79.178µs]; SLO is < 90.000µs
  • 🟩 max_rss_usage seen in benchmark [29.870MB; 29.938MB]; SLO is < 31.000MB

sethttpmeta-obfuscation-regular-case-implicit-query

  • 🟩 execution_time seen in benchmark [79.409µs; 79.612µs]; SLO is < 90.000µs
  • 🟩 max_rss_usage seen in benchmark [29.877MB; 29.971MB]; SLO is < 31.000MB

sethttpmeta-obfuscation-send-querystring-disabled

  • 🟩 execution_time seen in benchmark [156.567µs; 156.846µs]; SLO is < 170.000µs
  • 🟩 max_rss_usage seen in benchmark [29.877MB; 29.971MB]; SLO is < 31.000MB

sethttpmeta-obfuscation-worst-case-explicit-query

  • 🟩 execution_time seen in benchmark [152.444µs; 152.709µs]; SLO is < 160.000µs
  • 🟩 max_rss_usage seen in benchmark [29.884MB; 29.884MB]; SLO is < 31.000MB

sethttpmeta-obfuscation-worst-case-implicit-query

  • 🟩 execution_time seen in benchmark [157.351µs; 158.595µs]; SLO is < 170.000µs
  • 🟩 max_rss_usage seen in benchmark [29.884MB; 29.884MB]; SLO is < 31.000MB

sethttpmeta-useragentvariant_exists_1

  • 🟩 execution_time seen in benchmark [41.447µs; 41.625µs]; SLO is < 50.000µs
  • 🟩 max_rss_usage seen in benchmark [29.491MB; 29.491MB]; SLO is < 31.000MB

sethttpmeta-useragentvariant_exists_2

  • 🟩 execution_time seen in benchmark [42.523µs; 42.728µs]; SLO is < 50.000µs
  • 🟩 max_rss_usage seen in benchmark [29.491MB; 29.491MB]; SLO is < 31.000MB

sethttpmeta-useragentvariant_exists_3

  • 🟩 execution_time seen in benchmark [42.211µs; 42.525µs]; SLO is < 50.000µs
  • 🟩 max_rss_usage seen in benchmark [29.484MB; 29.577MB]; SLO is < 31.000MB

sethttpmeta-useragentvariant_not_exists_1

  • 🟩 execution_time seen in benchmark [41.775µs; 42.077µs]; SLO is < 50.000µs
  • 🟩 max_rss_usage seen in benchmark [29.477MB; 29.545MB]; SLO is < 31.000MB

sethttpmeta-useragentvariant_not_exists_2

  • 🟩 execution_time seen in benchmark [41.915µs; 42.210µs]; SLO is < 50.000µs
  • 🟩 max_rss_usage seen in benchmark [29.491MB; 29.491MB]; SLO is < 31.000MB

span-add-event

  • 🟩 execution_time seen in benchmark [22.820ms; 23.256ms]; SLO is < 26.200ms
  • 🟩 max_rss_usage seen in benchmark [48.468MB; 48.488MB]; SLO is < 49.000MB

span-add-metrics

  • 🟩 execution_time seen in benchmark [89.912ms; 91.059ms]; SLO is < 98.350ms
  • 🟩 max_rss_usage seen in benchmark [614.743MB; 614.863MB]; SLO is < 961.000MB

span-add-tags

  • 🟩 execution_time seen in benchmark [148.172ms; 150.462ms]; SLO is < 168.550ms
  • 🟩 max_rss_usage seen in benchmark [614.302MB; 614.491MB]; SLO is < 962.500MB

span-get-context

  • 🟩 execution_time seen in benchmark [21.376ms; 21.755ms]; SLO is < 23.700ms
  • 🟩 max_rss_usage seen in benchmark [47.283MB; 47.305MB]; SLO is < 47.500MB

span-is-recording

  • 🟩 execution_time seen in benchmark [21.426ms; 21.848ms]; SLO is < 23.900ms
  • 🟩 max_rss_usage seen in benchmark [47.295MB; 47.311MB]; SLO is < 47.500MB

span-record-exception

  • 🟩 execution_time seen in benchmark [41.011ms; 41.265ms]; SLO is < 44.500ms
  • 🟩 max_rss_usage seen in benchmark [40.309MB; 40.341MB]; SLO is < 40.500MB

span-set-status

  • 🟩 execution_time seen in benchmark [22.992ms; 23.390ms]; SLO is < 26.000ms
  • 🟩 max_rss_usage seen in benchmark [47.272MB; 47.298MB]; SLO is < 47.500MB

span-start

  • 🟩 execution_time seen in benchmark [21.136ms; 21.522ms]; SLO is < 23.500ms
  • 🟩 max_rss_usage seen in benchmark [47.282MB; 47.303MB]; SLO is < 47.500MB

span-start-finish

  • 🟩 execution_time seen in benchmark [49.633ms; 49.908ms]; SLO is < 52.500ms
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

span-start-finish-telemetry

  • 🟩 execution_time seen in benchmark [51.546ms; 52.142ms]; SLO is < 55.300ms
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

span-start-finish-traceid128

  • 🟩 execution_time seen in benchmark [53.707ms; 54.294ms]; SLO is < 56.050ms
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

span-start-traceid128

  • 🟩 execution_time seen in benchmark [21.423ms; 21.819ms]; SLO is < 24.600ms
  • 🟩 max_rss_usage seen in benchmark [47.306MB; 47.323MB]; SLO is < 47.500MB

span-update-name

  • 🟩 execution_time seen in benchmark [21.696ms; 22.050ms]; SLO is < 24.100ms
  • 🟩 max_rss_usage seen in benchmark [47.795MB; 47.816MB]; SLO is < 48.000MB

telemetryaddmetric-1-count-metric-1-times

  • 🟩 execution_time seen in benchmark [3.186µs; 3.233µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

telemetryaddmetric-1-count-metrics-100-times

  • 🟩 execution_time seen in benchmark [213.723µs; 214.782µs]; SLO is < 240.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

telemetryaddmetric-1-distribution-metric-1-times

  • 🟩 execution_time seen in benchmark [2.854µs; 2.869µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

telemetryaddmetric-1-distribution-metrics-100-times

  • 🟩 execution_time seen in benchmark [191.428µs; 192.529µs]; SLO is < 210.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

telemetryaddmetric-1-gauge-metric-1-times

  • 🟩 execution_time seen in benchmark [2.219µs; 2.256µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

telemetryaddmetric-1-gauge-metrics-100-times

  • 🟩 execution_time seen in benchmark [122.978µs; 123.424µs]; SLO is < 140.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

telemetryaddmetric-1-rate-metric-1-times

  • 🟩 execution_time seen in benchmark [3.197µs; 3.254µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

telemetryaddmetric-1-rate-metrics-100-times

  • 🟩 execution_time seen in benchmark [213.629µs; 214.673µs]; SLO is < 230.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

telemetryaddmetric-100-count-metrics-100-times

  • 🟩 execution_time seen in benchmark [21.495ms; 21.590ms]; SLO is < 22.500ms
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

telemetryaddmetric-100-distribution-metrics-100-times

  • 🟩 execution_time seen in benchmark [1.968ms; 1.976ms]; SLO is < 2.100ms
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

telemetryaddmetric-100-gauge-metrics-100-times

  • 🟩 execution_time seen in benchmark [1.277ms; 1.284ms]; SLO is < 1.400ms
  • 🟩 max_rss_usage seen in benchmark [29.027MB; 29.090MB]; SLO is < 31.000MB

telemetryaddmetric-100-rate-metrics-100-times

  • 🟩 execution_time seen in benchmark [2.202ms; 2.215ms]; SLO is < 2.400ms
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

telemetryaddmetric-flush-1-metric

  • 🟩 execution_time seen in benchmark [4.317µs; 4.383µs]; SLO is < 10.000µs
  • 🟩 max_rss_usage seen in benchmark [29.055MB; 29.101MB]; SLO is < 31.000MB

telemetryaddmetric-flush-100-metrics

  • 🟩 execution_time seen in benchmark [179.373µs; 180.395µs]; SLO is < 200.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

telemetryaddmetric-flush-1000-metrics

  • 🟩 execution_time seen in benchmark [2.178ms; 2.191ms]; SLO is < 2.350ms
  • 🟩 max_rss_usage seen in benchmark [30.278MB; 30.278MB]; SLO is < 31.000MB

tracer-large

  • 🟩 execution_time seen in benchmark [29.370ms; 29.729ms]; SLO is < 32.950ms
  • 🟩 max_rss_usage seen in benchmark [30.278MB; 30.278MB]; SLO is < 31.000MB

tracer-medium

  • 🟩 execution_time seen in benchmark [2.893ms; 2.918ms]; SLO is < 3.200ms
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

tracer-small

  • 🟩 execution_time seen in benchmark [328.318µs; 329.660µs]; SLO is < 370.000µs
  • 🟩 max_rss_usage seen in benchmark [29.098MB; 29.098MB]; SLO is < 31.000MB

Legend:

  • 🟩 pass
  • 🟥 breach
  • 🟨 warning
  • (unstable) unstable

Note: All comparisons are against the mean unless a different statistic (e.g., p95) is explicitly shown.

@imran-at-datadog
Copy link
Author

imran-at-datadog commented Jul 17, 2025

does this have to be done via OTel? any reason we don't want to support ddtrace-run ray ... ? we could probably support something like ray start --head --tracing-startup-hook=ddtrace.auto which would give you full instrumentation for all integrations, profiling, and etc.

No it doesn't have to be done this way. We have discussed various approaches including instrumentation. This is not intended to be the final solution yet, but something we can explore and iterate on. The open telemetry approach might get us more structured information since Ray might possibly do some tagging and analysis already, but there are also benefits of other possible approaches. We are hoping to setting on the best method in the next month or so.

@imran-at-datadog imran-at-datadog changed the title feat(aiobs): Add tracing hook for Ray ML framework feat(aiobs): add tracing hook for ray ml framework Jul 17, 2025
@imran-at-datadog imran-at-datadog added the changelog/no-changelog A changelog entry is not required for this PR. label Jul 18, 2025
@imran-at-datadog
Copy link
Author

imran-at-datadog commented Jul 18, 2025

is it possible to add a test suite for this integration?

Can you give me a bit more info on what type of tests would be appropriate? Do you have an example of similar tests?

Since this is preliminary/exploratory I was hoping the manual tests I provided would be enough. Do you think this is reasonable?

@brettlangdon
Copy link
Member

Give we are adding something new to the public API we should have the full suite of testing for this, integration/end-to-end/unit tests/etc. Snapshot tests with the test agent are a great building block for writing tests for integrations.

If you want to instead make it be ddtrace._aiobs. as the module name, the _ prefix will mean it is private/internal and customers should not use it, and we make no promises that it'll not break between any two minor releases. If you wanted to do this for your beta testing, and then we can make better evaluations on integration/testing completeness later when you make it public.

Just an option.

@emmettbutler emmettbutler self-requested a review July 18, 2025 17:38
Copy link
Collaborator

@emmettbutler emmettbutler left a comment

Choose a reason for hiding this comment

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

Looks good. Needs tests and a release note.

@imran-at-datadog
Copy link
Author

I will most likely be closing this in favor of [WIP] add ray tracing hook with ddtrace.auto import

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
changelog/no-changelog A changelog entry is not required for this PR.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants