dd-trace-py icon indicating copy to clipboard operation
dd-trace-py copied to clipboard

refactor: native fork-safe threads

Open P403n1x87 opened this issue 5 months ago โ€ข 7 comments

We refactor the native periodic thread implementation to be fork-safe whereby all such threads that are running at the time of a fork are automatically stopped before the fork, then restarted after it. We also take care to avoid stopping and restarting threads in the parent process if we detect an immediate call to fork again.

Some of the implications of this change are that there is no longer the need for fork-safe synchronisation objects, such as Locks and Events. This is because all (ddtrace) threads are guaranteed to be stopped before a fork, and restarted afterwards. There is also no longer the need to manually recreate threads, as currently done in many places. The only thing that needs to be taken care of is to ensure that the state of the periodic services is as expected after a fork. For example, many products have the need to avoid sending duplicate values from different processes. This can be achieved by either subclassing from ForksafeAwakeablePeriodicService and implementing the reset method to let any periodic service to automatically trigger the reset logic on forks (the preferred way), or by the current approach of registering a fork-safe hook.

Performance Analysis

Stopping and restarting threads can be expensive but gives good fork-safety guarantees. Because threads have to be joined before the fork can continue, a forked process might get delayed by a thread currently busy on I/O. Because our periodic threads run on periods that are O(1s), we can expect these unfortunate event to be quite rare. Besides, it is quite likely that a process forks at the very beginning of its execution, where it is unlikely that the periodic threads have had a chance to trigger their first periodic action.

The timer set around close fork invocation should reduce delays even more by preventing the parent process from stopping and restarting threads in between fork calls. To give some number, the invocation of 1000 forks in a tight loop with the tracer and the profiler enabled require ~1.2s to complete on an M1. In comparison, the same loop without ddtrace takes 0.3s. The same loop with stop/restart in between forks takes ~1.5s.

The wall-time view through a profiler gives the following picture:

Screenshot 2025-07-29 at 11 27 49

A good portion of the overhead comes from the tracing of fork itself, which could be improved by moving it to the native layer in follow-up work.

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

P403n1x87 avatar Jul 29 '25 10:07 P403n1x87

CODEOWNERS have been resolved as:

ddtrace/internal/threads.py                                             @DataDog/apm-core-python
ddtrace/_trace/context.py                                               @DataDog/apm-sdk-capabilities-python
ddtrace/contrib/internal/ray/span_manager.py                            @DataDog/ml-observability
ddtrace/contrib/internal/subprocess/patch.py                            @DataDog/asm-python
ddtrace/debugging/_encoding.py                                          @DataDog/debugger-python
ddtrace/debugging/_origin/span.py                                       @DataDog/debugger-python
ddtrace/debugging/_probe/registry.py                                    @DataDog/debugger-python
ddtrace/internal/_threads.cpp                                           @DataDog/apm-core-python
ddtrace/internal/_threads.pyi                                           @DataDog/apm-core-python
ddtrace/internal/datadog/profiling/stack_v2/src/sampler.cpp             @DataDog/profiling-python
ddtrace/internal/datastreams/processor.py                               @DataDog/data-streams-monitoring
ddtrace/internal/forksafe.py                                            @DataDog/apm-core-python
ddtrace/internal/periodic.py                                            @DataDog/apm-core-python
ddtrace/internal/processor/endpoint_call_counter.py                     @DataDog/apm-core-python
ddtrace/internal/processor/stats.py                                     @DataDog/apm-core-python
ddtrace/internal/remoteconfig/worker.py                                 @DataDog/remote-config @DataDog/apm-core-python
ddtrace/internal/runtime/runtime_metrics.py                             @DataDog/apm-sdk-capabilities-python
ddtrace/internal/service.py                                             @DataDog/apm-core-python
ddtrace/internal/telemetry/metrics_namespaces.pyx                       @DataDog/apm-python
ddtrace/internal/telemetry/writer.py                                    @DataDog/apm-python
ddtrace/llmobs/_evaluators/runner.py                                    @DataDog/ml-observability
ddtrace/llmobs/_llmobs.py                                               @DataDog/ml-observability
ddtrace/llmobs/_log_writer.py                                           @DataDog/ml-observability
ddtrace/llmobs/_writer.py                                               @DataDog/ml-observability
ddtrace/profiling/collector/stack.pyx                                   @DataDog/profiling-python
ddtrace/profiling/profiler.py                                           @DataDog/profiling-python
ddtrace/profiling/scheduler.py                                          @DataDog/profiling-python
tests/contrib/uwsgi/__init__.py                                         @DataDog/apm-core-python @DataDog/apm-idm-python
tests/internal/service_name/test_extra_services_names.py                @DataDog/apm-core-python
tests/internal/test_forksafe.py                                         @DataDog/apm-core-python
tests/internal/test_periodic.py                                         @DataDog/apm-core-python
tests/profiling/collector/pprof_utils.py                                @DataDog/profiling-python
tests/profiling/gevent_fork.py                                          @DataDog/profiling-python
tests/profiling/test_main.py                                            @DataDog/profiling-python
tests/profiling/test_uwsgi.py                                           @DataDog/profiling-python
tests/profiling/uwsgi-app.py                                            @DataDog/profiling-python
tests/profiling_v2/test_gunicorn.py                                     @DataDog/profiling-python
tests/profiling_v2/test_main.py                                         @DataDog/profiling-python
tests/profiling_v2/test_uwsgi.py                                        @DataDog/profiling-python

github-actions[bot] avatar Jul 29 '25 10:07 github-actions[bot]

Bootstrap import analysis

Comparison of import times between this PR and base.

Summary

The average import time from this PR is: 237 ยฑ 2 ms.

The average import time from base is: 239 ยฑ 2 ms.

The import time difference between this PR and base is: -1.79 ยฑ 0.08 ms.

Import time breakdown

The following import paths have appeared:

ddtrace.auto 1.683 ms (0.71%)
ddtrace 1.683 ms (0.71%)
ddtrace._logger 1.683 ms (0.71%)
ddtrace.internal.telemetry 1.683 ms (0.71%)
ddtrace.internal.telemetry.writer 1.683 ms (0.71%)
ddtrace.internal.periodic 1.683 ms (0.71%)
ddtrace.internal.service 1.683 ms (0.71%)
ddtrace.internal.threads 1.683 ms (0.71%)
ddtrace.internal._threads 1.093 ms (0.46%)

The following import paths have disappeared:

ddtrace.auto 1.087 ms (0.46%)
ddtrace 1.087 ms (0.46%)
ddtrace._logger 1.087 ms (0.46%)
ddtrace.internal.telemetry 1.087 ms (0.46%)
ddtrace.internal.telemetry.writer 1.087 ms (0.46%)
ddtrace.internal.periodic 1.087 ms (0.46%)
ddtrace.internal._threads 1.087 ms (0.46%)

The following import paths have grown:

ddtrace.auto 0.252 ms (0.11%)
ddtrace 0.175 ms (0.07%)
ddtrace.settings._config 0.112 ms (0.05%)
ddtrace.internal.gitmetadata 0.112 ms (0.05%)
ddtrace._logger 0.062 ms (0.03%)
ddtrace.internal.telemetry 0.062 ms (0.03%)
ddtrace.internal.telemetry.writer 0.062 ms (0.03%)
ddtrace.internal.telemetry.metrics_namespaces 0.062 ms (0.03%)
ddtrace.bootstrap.sitecustomize 0.078 ms (0.03%)
ddtrace.bootstrap.preload 0.078 ms (0.03%)
ddtrace.debugging._import 0.078 ms (0.03%)
ddtrace.debugging._function.discovery 0.078 ms (0.03%)

The following import paths have shrunk:

ddtrace.auto 2.442 ms (1.03%)
ddtrace.bootstrap.sitecustomize 1.435 ms (0.61%)
ddtrace.bootstrap.preload 1.435 ms (0.61%)
ddtrace.internal.remoteconfig.client 0.641 ms (0.27%)
ddtrace.debugging._import 0.092 ms (0.04%)
ddtrace.settings.profiling 0.015 ms (0.01%)
ddtrace.internal.datadog.profiling.ddup 0.015 ms (0.01%)
ddtrace.internal.datadog.profiling.ddup._ddup 0.015 ms (0.01%)
ddtrace.internal.datadog.profiling.code_provenance 0.015 ms (0.01%)
ddtrace 1.007 ms (0.43%)
ddtrace._logger 0.179 ms (0.08%)
ddtrace.internal.telemetry 0.179 ms (0.08%)
ddtrace.internal.telemetry.writer 0.179 ms (0.08%)
ddtrace.internal.periodic 0.107 ms (0.05%)
ddtrace.internal.service 0.078 ms (0.03%)
ddtrace.settings._config 0.111 ms (0.05%)
ddtrace.internal.schema 0.111 ms (0.05%)
ddtrace.internal.schema.span_attribute_schema 0.111 ms (0.05%)
ddtrace.internal._unpatched 0.060 ms (0.03%)
subprocess 0.031 ms (0.01%)
contextlib 0.031 ms (0.01%)
json 0.029 ms (0.01%)
json.decoder 0.029 ms (0.01%)
re 0.029 ms (0.01%)
enum 0.029 ms (0.01%)
types 0.029 ms (0.01%)

github-actions[bot] avatar Jul 29 '25 10:07 github-actions[bot]

Performance SLOs

Comparing candidate refactor/native-forksafe-threads (f421c59f58e9bcacf4f70f58cd0facdcce478ca6) with baseline main (fcedfb080c9f7f343934ccec2b9156393790426d)

๐Ÿ“ˆ Performance Regressions (1 suite)
๐Ÿ“ˆ iastaspects - 118/118

โœ… add_aspect

Time: โœ… 0.402ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -96.0%) vs baseline: -1.0%

Memory: โœ… 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.0%


โœ… add_inplace_aspect

Time: โœ… 0.405ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -96.0%) vs baseline: +0.3%

Memory: โœ… 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.8%


โœ… add_inplace_noaspect

Time: โœ… 0.318ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -96.8%) vs baseline: -0.4%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… add_noaspect

Time: โœ… 0.277ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -97.2%) vs baseline: -0.8%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +5.0%


โœ… bytearray_aspect

Time: โœ… 1.363ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -86.4%) vs baseline: ~same

Memory: โœ… 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.1%


โœ… bytearray_extend_aspect

Time: โœ… 1.516ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -84.8%) vs baseline: +0.4%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7%


โœ… bytearray_extend_noaspect

Time: โœ… 0.617ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -93.8%) vs baseline: +0.5%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… bytearray_noaspect

Time: โœ… 0.491ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -95.1%) vs baseline: +1.9%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… bytes_aspect

Time: โœ… 1.518ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -84.8%) vs baseline: ๐Ÿ“ˆ +18.8%

Memory: โœ… 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +4.9%


โœ… bytes_noaspect

Time: โœ… 0.497ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -95.0%) vs baseline: +1.4%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… bytesio_aspect

Time: โœ… 1.360ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -86.4%) vs baseline: ~same

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… bytesio_noaspect

Time: โœ… 0.498ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -95.0%) vs baseline: +0.4%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… capitalize_aspect

Time: โœ… 0.731ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -92.7%) vs baseline: +0.1%

Memory: โœ… 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.6%


โœ… capitalize_noaspect

Time: โœ… 0.431ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -95.7%) vs baseline: -0.8%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0%


โœ… casefold_aspect

Time: โœ… 0.744ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -92.6%) vs baseline: ~same

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7%


โœ… casefold_noaspect

Time: โœ… 0.366ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -96.3%) vs baseline: -1.0%

Memory: โœ… 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +4.9%


โœ… decode_aspect

Time: โœ… 0.726ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -92.7%) vs baseline: +0.5%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… decode_noaspect

Time: โœ… 0.424ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -95.8%) vs baseline: ~same

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.7%


โœ… encode_aspect

Time: โœ… 0.708ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -92.9%) vs baseline: +0.9%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.8%


โœ… encode_noaspect

Time: โœ… 0.406ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -95.9%) vs baseline: +0.4%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.8%


โœ… format_aspect

Time: โœ… 3.391ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -66.1%) vs baseline: ~same

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +5.0%


โœ… format_map_aspect

Time: โœ… 3.666ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -63.3%) vs baseline: ~same

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… format_map_noaspect

Time: โœ… 0.777ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -92.2%) vs baseline: ~same

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0%


โœ… format_noaspect

Time: โœ… 0.599ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -94.0%) vs baseline: ~same

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… index_aspect

Time: โœ… 0.355ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -96.5%) vs baseline: -1.5%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… index_noaspect

Time: โœ… 0.279ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -97.2%) vs baseline: +0.7%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7%


โœ… join_aspect

Time: โœ… 1.345ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -86.5%) vs baseline: -0.6%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7%


โœ… join_noaspect

Time: โœ… 0.491ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -95.1%) vs baseline: +0.3%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… ljust_aspect

Time: โœ… 2.546ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -87.3%) vs baseline: -0.9%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… ljust_noaspect

Time: โœ… 0.403ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -96.0%) vs baseline: ~same

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… lower_aspect

Time: โœ… 2.176ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -78.2%) vs baseline: +0.3%

Memory: โœ… 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.0%


โœ… lower_noaspect

Time: โœ… 0.366ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -96.3%) vs baseline: -2.0%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +5.0%


โœ… lstrip_aspect

Time: โœ… 2.208ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -89.0%) vs baseline: +0.4%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… lstrip_noaspect

Time: โœ… 0.383ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -96.2%) vs baseline: -0.8%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… modulo_aspect

Time: โœ… 0.990ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -90.1%) vs baseline: -1.3%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… modulo_aspect_for_bytearray_bytearray

Time: โœ… 1.551ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -84.5%) vs baseline: -0.7%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… modulo_aspect_for_bytes

Time: โœ… 0.967ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -90.3%) vs baseline: -1.1%

Memory: โœ… 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.1%


โœ… modulo_aspect_for_bytes_bytearray

Time: โœ… 1.218ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -87.8%) vs baseline: -0.9%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.8%


โœ… modulo_noaspect

Time: โœ… 0.632ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -93.7%) vs baseline: ~same

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… replace_aspect

Time: โœ… 4.951ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -50.5%) vs baseline: +1.1%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8%


โœ… replace_noaspect

Time: โœ… 0.459ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -95.4%) vs baseline: -1.0%

Memory: โœ… 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.1%


โœ… repr_aspect

Time: โœ… 0.909ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -90.9%) vs baseline: -0.1%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7%


โœ… repr_noaspect

Time: โœ… 0.409ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -95.9%) vs baseline: -1.6%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… rstrip_aspect

Time: โœ… 1.903ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -90.5%) vs baseline: -0.5%

Memory: โœ… 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.7%


โœ… rstrip_noaspect

Time: โœ… 0.374ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -96.3%) vs baseline: -0.8%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +5.0%


โœ… slice_aspect

Time: โœ… 0.490ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -95.1%) vs baseline: -1.6%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… slice_noaspect

Time: โœ… 0.450ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -95.5%) vs baseline: +1.0%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… stringio_aspect

Time: โœ… 1.588ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -84.1%) vs baseline: +3.1%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7%


โœ… stringio_noaspect

Time: โœ… 0.720ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -92.8%) vs baseline: +0.9%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… strip_aspect

Time: โœ… 2.194ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -89.0%) vs baseline: -0.8%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… strip_noaspect

Time: โœ… 0.387ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -96.1%) vs baseline: +0.1%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… swapcase_aspect

Time: โœ… 2.392ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -76.1%) vs baseline: -0.4%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… swapcase_noaspect

Time: โœ… 0.528ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -94.7%) vs baseline: -1.2%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7%


โœ… title_aspect

Time: โœ… 2.332ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -76.7%) vs baseline: -0.7%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… title_noaspect

Time: โœ… 0.499ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -95.0%) vs baseline: -0.1%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0%


โœ… translate_aspect

Time: โœ… 3.245ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -67.6%) vs baseline: +0.4%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +5.0%


โœ… translate_noaspect

Time: โœ… 1.045ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -89.6%) vs baseline: +0.3%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.7%


โœ… upper_aspect

Time: โœ… 2.189ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -78.1%) vs baseline: -0.3%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… upper_noaspect

Time: โœ… 0.373ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -96.3%) vs baseline: +1.1%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%

๐ŸŸก Near SLO Breach (5 suites)
๐ŸŸก djangosimple - 30/30

โœ… appsec

Time: โœ… 20.451ms (SLO: <22.300ms -8.3%) vs baseline: ~same

Memory: โœ… 66.303MB (SLO: <67.000MB ๐ŸŸก -1.0%) vs baseline: +4.5%


โœ… exception-replay-enabled

Time: โœ… 1.338ms (SLO: <1.450ms -7.7%) vs baseline: -0.3%

Memory: โœ… 64.580MB (SLO: <67.000MB -3.6%) vs baseline: +4.8%


โœ… iast

Time: โœ… 20.451ms (SLO: <22.250ms -8.1%) vs baseline: -0.2%

Memory: โœ… 66.362MB (SLO: <67.000MB ๐ŸŸก -1.0%) vs baseline: +4.8%


โœ… profiler

Time: โœ… 15.500ms (SLO: <16.550ms -6.3%) vs baseline: +0.2%

Memory: โœ… 54.068MB (SLO: <54.500MB ๐ŸŸก -0.8%) vs baseline: +5.0%


โœ… resource-renaming

Time: โœ… 20.578ms (SLO: <21.750ms -5.4%) vs baseline: +0.2%

Memory: โœ… 66.343MB (SLO: <67.000MB ๐ŸŸก -1.0%) vs baseline: +4.7%


โœ… span-code-origin

Time: โœ… 25.466ms (SLO: <28.200ms -9.7%) vs baseline: +0.2%

Memory: โœ… 67.496MB (SLO: <69.500MB -2.9%) vs baseline: +4.8%


โœ… tracer

Time: โœ… 20.486ms (SLO: <21.750ms -5.8%) vs baseline: ~same

Memory: โœ… 66.283MB (SLO: <67.000MB ๐ŸŸก -1.1%) vs baseline: +4.6%


โœ… tracer-and-profiler

Time: โœ… 22.583ms (SLO: <23.500ms -3.9%) vs baseline: -0.4%

Memory: โœ… 67.761MB (SLO: <68.000MB ๐ŸŸก -0.4%) vs baseline: +4.6%


โœ… tracer-dont-create-db-spans

Time: โœ… 19.318ms (SLO: <21.500ms ๐Ÿ“‰ -10.2%) vs baseline: -0.3%

Memory: โœ… 66.375MB (SLO: <67.000MB ๐ŸŸก -0.9%) vs baseline: +4.7%


โœ… tracer-minimal

Time: โœ… 16.591ms (SLO: <17.500ms -5.2%) vs baseline: -0.3%

Memory: โœ… 66.315MB (SLO: <67.000MB ๐ŸŸก -1.0%) vs baseline: +4.7%


โœ… tracer-native

Time: โœ… 20.438ms (SLO: <21.750ms -6.0%) vs baseline: ~same

Memory: โœ… 72.273MB (SLO: <72.500MB ๐ŸŸก -0.3%) vs baseline: +4.8%


โœ… tracer-no-caches

Time: โœ… 18.454ms (SLO: <19.650ms -6.1%) vs baseline: -0.1%

Memory: โœ… 66.336MB (SLO: <67.000MB ๐ŸŸก -1.0%) vs baseline: +4.6%


โœ… tracer-no-databases

Time: โœ… 18.800ms (SLO: <20.100ms -6.5%) vs baseline: +0.2%

Memory: โœ… 66.297MB (SLO: <67.000MB ๐ŸŸก -1.0%) vs baseline: +4.7%


โœ… tracer-no-middleware

Time: โœ… 20.142ms (SLO: <21.500ms -6.3%) vs baseline: -0.4%

Memory: โœ… 66.379MB (SLO: <67.000MB ๐ŸŸก -0.9%) vs baseline: +4.9%


โœ… tracer-no-templates

Time: โœ… 20.261ms (SLO: <22.000ms -7.9%) vs baseline: -0.4%

Memory: โœ… 66.305MB (SLO: <67.000MB ๐ŸŸก -1.0%) vs baseline: +4.6%


๐ŸŸก errortrackingdjangosimple - 6/6

โœ… errortracking-enabled-all

Time: โœ… 18.073ms (SLO: <19.850ms -9.0%) vs baseline: -0.3%

Memory: โœ… 66.339MB (SLO: <66.500MB ๐ŸŸก -0.2%) vs baseline: +4.7%


โœ… errortracking-enabled-user

Time: โœ… 18.093ms (SLO: <19.400ms -6.7%) vs baseline: -0.1%

Memory: โœ… 66.370MB (SLO: <66.500MB ๐ŸŸก -0.2%) vs baseline: +4.7%


โœ… tracer-enabled

Time: โœ… 18.076ms (SLO: <19.450ms -7.1%) vs baseline: ~same

Memory: โœ… 66.309MB (SLO: <66.500MB ๐ŸŸก -0.3%) vs baseline: +4.8%


๐ŸŸก errortrackingflasksqli - 6/6

โœ… errortracking-enabled-all

Time: โœ… 2.076ms (SLO: <2.300ms -9.7%) vs baseline: ~same

Memory: โœ… 52.670MB (SLO: <53.500MB ๐ŸŸก -1.6%) vs baseline: +4.3%


โœ… errortracking-enabled-user

Time: โœ… 2.071ms (SLO: <2.250ms -8.0%) vs baseline: -0.2%

Memory: โœ… 52.704MB (SLO: <53.500MB ๐ŸŸก -1.5%) vs baseline: +4.4%


โœ… tracer-enabled

Time: โœ… 2.072ms (SLO: <2.300ms -9.9%) vs baseline: -0.5%

Memory: โœ… 52.777MB (SLO: <53.500MB ๐ŸŸก -1.4%) vs baseline: +4.8%


๐ŸŸก flasksimple - 18/18

โœ… appsec-get

Time: โœ… 4.573ms (SLO: <4.750ms -3.7%) vs baseline: -0.1%

Memory: โœ… 62.725MB (SLO: <65.000MB -3.5%) vs baseline: +4.9%


โœ… appsec-post

Time: โœ… 6.627ms (SLO: <6.750ms ๐ŸŸก -1.8%) vs baseline: +0.3%

Memory: โœ… 62.803MB (SLO: <65.000MB -3.4%) vs baseline: +4.8%


โœ… appsec-telemetry

Time: โœ… 4.584ms (SLO: <4.750ms -3.5%) vs baseline: -0.1%

Memory: โœ… 62.797MB (SLO: <65.000MB -3.4%) vs baseline: +5.0%


โœ… debugger

Time: โœ… 1.861ms (SLO: <2.000ms -6.9%) vs baseline: +0.5%

Memory: โœ… 45.436MB (SLO: <47.000MB -3.3%) vs baseline: +5.2%


โœ… iast-get

Time: โœ… 1.858ms (SLO: <2.000ms -7.1%) vs baseline: +0.1%

Memory: โœ… 42.287MB (SLO: <49.000MB ๐Ÿ“‰ -13.7%) vs baseline: +4.6%


โœ… profiler

Time: โœ… 1.918ms (SLO: <2.100ms -8.7%) vs baseline: +0.3%

Memory: โœ… 46.834MB (SLO: <47.000MB ๐ŸŸก -0.4%) vs baseline: +5.3%


โœ… resource-renaming

Time: โœ… 3.365ms (SLO: <3.650ms -7.8%) vs baseline: -0.6%

Memory: โœ… 53.048MB (SLO: <53.500MB ๐ŸŸก -0.8%) vs baseline: +4.9%


โœ… tracer

Time: โœ… 3.362ms (SLO: <3.650ms -7.9%) vs baseline: ~same

Memory: โœ… 53.045MB (SLO: <53.500MB ๐ŸŸก -0.8%) vs baseline: +4.9%


โœ… tracer-native

Time: โœ… 3.364ms (SLO: <3.650ms -7.8%) vs baseline: ~same

Memory: โœ… 58.766MB (SLO: <60.000MB -2.1%) vs baseline: +4.5%


๐ŸŸก flasksqli - 6/6

โœ… appsec-enabled

Time: โœ… 3.956ms (SLO: <4.200ms -5.8%) vs baseline: ~same

Memory: โœ… 62.786MB (SLO: <66.000MB -4.9%) vs baseline: +4.8%


โœ… iast-enabled

Time: โœ… 2.439ms (SLO: <2.800ms ๐Ÿ“‰ -12.9%) vs baseline: +0.4%

Memory: โœ… 59.714MB (SLO: <60.000MB ๐ŸŸก -0.5%) vs baseline: +5.2%


โœ… tracer-enabled

Time: โœ… 2.065ms (SLO: <2.250ms -8.2%) vs baseline: +0.3%

Memory: โœ… 53.014MB (SLO: <54.500MB -2.7%) vs baseline: +5.1%

๐Ÿ“‰ Performance Improvements (2 suites)
๐Ÿ“‰ httppropagationextract - 60/60

โœ… all_styles_all_headers

Time: โœ… 76.780ยตs (SLO: <100.000ยตs ๐Ÿ“‰ -23.2%) vs baseline: -5.0%

Memory: โœ… 32.165MB (SLO: <33.500MB -4.0%) vs baseline: +4.7%


โœ… b3_headers

Time: โœ… 12.944ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -35.3%) vs baseline: -8.7%

Memory: โœ… 32.185MB (SLO: <33.500MB -3.9%) vs baseline: +4.8%


โœ… b3_single_headers

Time: โœ… 12.579ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -37.1%) vs baseline: -5.2%

Memory: โœ… 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.8%


โœ… datadog_tracecontext_tracestate_not_propagated_on_trace_id_no_match

Time: โœ… 61.627ยตs (SLO: <80.000ยตs ๐Ÿ“‰ -23.0%) vs baseline: -3.5%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… datadog_tracecontext_tracestate_propagated_on_trace_id_match

Time: โœ… 63.332ยตs (SLO: <80.000ยตs ๐Ÿ“‰ -20.8%) vs baseline: -3.8%

Memory: โœ… 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.9%


โœ… empty_headers

Time: โœ… 1.291ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -87.1%) vs baseline: ๐Ÿ“‰ -19.2%

Memory: โœ… 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.9%


โœ… full_t_id_datadog_headers

Time: โœ… 21.162ยตs (SLO: <30.000ยตs ๐Ÿ“‰ -29.5%) vs baseline: -8.2%

Memory: โœ… 32.126MB (SLO: <33.500MB -4.1%) vs baseline: +4.6%


โœ… invalid_priority_header

Time: โœ… 5.921ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -40.8%) vs baseline: -8.6%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… invalid_span_id_header

Time: โœ… 5.914ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -40.9%) vs baseline: -8.8%

Memory: โœ… 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +5.0%


โœ… invalid_tags_header

Time: โœ… 5.956ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -40.4%) vs baseline: -8.5%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… invalid_trace_id_header

Time: โœ… 5.961ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -40.4%) vs baseline: -8.0%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +5.0%


โœ… large_header_no_matches

Time: โœ… 27.452ยตs (SLO: <30.000ยตs -8.5%) vs baseline: -1.8%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… large_valid_headers_all

Time: โœ… 28.483ยตs (SLO: <40.000ยตs ๐Ÿ“‰ -28.8%) vs baseline: -2.3%

Memory: โœ… 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.8%


โœ… medium_header_no_matches

Time: โœ… 9.254ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -53.7%) vs baseline: -6.0%

Memory: โœ… 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.8%


โœ… medium_valid_headers_all

Time: โœ… 10.601ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -47.0%) vs baseline: -5.1%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +5.0%


โœ… none_propagation_style

Time: โœ… 1.390ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -86.1%) vs baseline: ๐Ÿ“‰ -18.9%

Memory: โœ… 32.185MB (SLO: <33.500MB -3.9%) vs baseline: +4.9%


โœ… tracecontext_headers

Time: โœ… 32.537ยตs (SLO: <40.000ยตs ๐Ÿ“‰ -18.7%) vs baseline: -5.6%

Memory: โœ… 32.185MB (SLO: <33.500MB -3.9%) vs baseline: +4.8%


โœ… valid_headers_all

Time: โœ… 5.939ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -40.6%) vs baseline: -9.3%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… valid_headers_basic

Time: โœ… 5.460ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -45.4%) vs baseline: -10.0%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +5.0%


โœ… wsgi_empty_headers

Time: โœ… 1.299ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -87.0%) vs baseline: ๐Ÿ“‰ -18.5%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… wsgi_invalid_priority_header

Time: โœ… 5.980ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -40.2%) vs baseline: -9.5%

Memory: โœ… 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.7%


โœ… wsgi_invalid_span_id_header

Time: โœ… 1.298ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -87.0%) vs baseline: ๐Ÿ“‰ -18.3%

Memory: โœ… 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.7%


โœ… wsgi_invalid_tags_header

Time: โœ… 5.929ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -40.7%) vs baseline: -9.4%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.8%


โœ… wsgi_invalid_trace_id_header

Time: โœ… 5.980ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -40.2%) vs baseline: -8.5%

Memory: โœ… 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.9%


โœ… wsgi_large_header_no_matches

Time: โœ… 28.493ยตs (SLO: <40.000ยตs ๐Ÿ“‰ -28.8%) vs baseline: -2.0%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… wsgi_large_valid_headers_all

Time: โœ… 29.828ยตs (SLO: <40.000ยตs ๐Ÿ“‰ -25.4%) vs baseline: -1.2%

Memory: โœ… 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… wsgi_medium_header_no_matches

Time: โœ… 9.511ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -52.4%) vs baseline: -5.4%

Memory: โœ… 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… wsgi_medium_valid_headers_all

Time: โœ… 10.891ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -45.5%) vs baseline: -5.4%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… wsgi_valid_headers_all

Time: โœ… 5.989ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -40.1%) vs baseline: -7.9%

Memory: โœ… 32.185MB (SLO: <33.500MB -3.9%) vs baseline: +4.8%


โœ… wsgi_valid_headers_basic

Time: โœ… 5.527ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -44.7%) vs baseline: -9.5%

Memory: โœ… 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +5.0%


๐Ÿ“‰ telemetryaddmetric - 30/30

โœ… 1-count-metric-1-times

Time: โœ… 2.073ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -89.6%) vs baseline: ๐Ÿ“‰ -29.8%

Memory: โœ… 32.224MB (SLO: <34.000MB -5.2%) vs baseline: +4.8%


โœ… 1-count-metrics-100-times

Time: โœ… 150.766ยตs (SLO: <220.000ยตs ๐Ÿ“‰ -31.5%) vs baseline: ๐Ÿ“‰ -25.5%

Memory: โœ… 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.7%


โœ… 1-distribution-metric-1-times

Time: โœ… 2.404ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -88.0%) vs baseline: ๐Ÿ“‰ -27.1%

Memory: โœ… 32.224MB (SLO: <34.000MB -5.2%) vs baseline: +5.0%


โœ… 1-distribution-metrics-100-times

Time: โœ… 165.981ยตs (SLO: <220.000ยตs ๐Ÿ“‰ -24.6%) vs baseline: ๐Ÿ“‰ -23.0%

Memory: โœ… 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +4.9%


โœ… 1-gauge-metric-1-times

Time: โœ… 1.995ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -90.0%) vs baseline: -8.0%

Memory: โœ… 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +4.9%


โœ… 1-gauge-metrics-100-times

Time: โœ… 141.129ยตs (SLO: <150.000ยตs -5.9%) vs baseline: +3.6%

Memory: โœ… 32.244MB (SLO: <34.000MB -5.2%) vs baseline: +5.0%


โœ… 1-rate-metric-1-times

Time: โœ… 2.269ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -88.7%) vs baseline: ๐Ÿ“‰ -27.1%

Memory: โœ… 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +4.9%


โœ… 1-rate-metrics-100-times

Time: โœ… 166.475ยตs (SLO: <250.000ยตs ๐Ÿ“‰ -33.4%) vs baseline: ๐Ÿ“‰ -22.8%

Memory: โœ… 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +4.9%


โœ… 100-count-metrics-100-times

Time: โœ… 15.153ms (SLO: <22.000ms ๐Ÿ“‰ -31.1%) vs baseline: ๐Ÿ“‰ -24.3%

Memory: โœ… 32.185MB (SLO: <34.000MB -5.3%) vs baseline: +4.9%


โœ… 100-distribution-metrics-100-times

Time: โœ… 1.752ms (SLO: <2.300ms ๐Ÿ“‰ -23.8%) vs baseline: ๐Ÿ“‰ -21.7%

Memory: โœ… 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.7%


โœ… 100-gauge-metrics-100-times

Time: โœ… 1.440ms (SLO: <1.550ms -7.1%) vs baseline: +3.4%

Memory: โœ… 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +4.9%


โœ… 100-rate-metrics-100-times

Time: โœ… 1.722ms (SLO: <2.550ms ๐Ÿ“‰ -32.5%) vs baseline: ๐Ÿ“‰ -20.4%

Memory: โœ… 32.185MB (SLO: <34.000MB -5.3%) vs baseline: +5.0%


โœ… flush-1-metric

Time: โœ… 3.654ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -81.7%) vs baseline: ๐Ÿ“‰ -22.0%

Memory: โœ… 32.185MB (SLO: <34.000MB -5.3%) vs baseline: +4.8%


โœ… flush-100-metrics

Time: โœ… 173.377ยตs (SLO: <250.000ยตs ๐Ÿ“‰ -30.6%) vs baseline: -1.4%

Memory: โœ… 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.7%


โœ… flush-1000-metrics

Time: โœ… 2.115ms (SLO: <2.500ms ๐Ÿ“‰ -15.4%) vs baseline: ~same

Memory: โœ… 32.991MB (SLO: <34.500MB -4.4%) vs baseline: +5.0%

โš ๏ธ Unstable Tests (1 suite)
โš ๏ธ coreapiscenario - 10/10 (1 unstable)

โš ๏ธ context_with_data_listeners

Time: โš ๏ธ 13.278ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -33.6%) vs baseline: ~same

Memory: โœ… 32.145MB (SLO: <33.500MB -4.0%) vs baseline: +4.5%


โœ… context_with_data_no_listeners

Time: โœ… 3.267ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -67.3%) vs baseline: -0.4%

Memory: โœ… 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +5.0%


โœ… get_item_exists

Time: โœ… 0.582ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -94.2%) vs baseline: -0.9%

Memory: โœ… 32.185MB (SLO: <33.500MB -3.9%) vs baseline: +5.0%


โœ… get_item_missing

Time: โœ… 0.634ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -93.7%) vs baseline: -0.2%

Memory: โœ… 32.165MB (SLO: <33.500MB -4.0%) vs baseline: +4.7%


โœ… set_item

Time: โœ… 23.907ยตs (SLO: <30.000ยตs ๐Ÿ“‰ -20.3%) vs baseline: ~same

Memory: โœ… 32.145MB (SLO: <33.500MB -4.0%) vs baseline: +4.6%

โœ… All Tests Passing (15 suites)
โœ… httppropagationinject - 16/16

โœ… ids_only

Time: โœ… 20.202ยตs (SLO: <30.000ยตs ๐Ÿ“‰ -32.7%) vs baseline: -6.7%

Memory: โœ… 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.7%


โœ… with_all

Time: โœ… 27.423ยตs (SLO: <40.000ยตs ๐Ÿ“‰ -31.4%) vs baseline: -5.0%

Memory: โœ… 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +5.0%


โœ… with_dd_origin

Time: โœ… 24.109ยตs (SLO: <30.000ยตs ๐Ÿ“‰ -19.6%) vs baseline: -4.4%

Memory: โœ… 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… with_priority_and_origin

Time: โœ… 23.354ยตs (SLO: <40.000ยตs ๐Ÿ“‰ -41.6%) vs baseline: -5.7%

Memory: โœ… 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… with_sampling_priority

Time: โœ… 20.508ยตs (SLO: <30.000ยตs ๐Ÿ“‰ -31.6%) vs baseline: -4.9%

Memory: โœ… 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… with_tags

Time: โœ… 25.611ยตs (SLO: <40.000ยตs ๐Ÿ“‰ -36.0%) vs baseline: -5.6%

Memory: โœ… 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… with_tags_invalid

Time: โœ… 27.227ยตs (SLO: <40.000ยตs ๐Ÿ“‰ -31.9%) vs baseline: -4.1%

Memory: โœ… 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +4.9%


โœ… with_tags_max_size

Time: โœ… 26.117ยตs (SLO: <40.000ยตs ๐Ÿ“‰ -34.7%) vs baseline: -5.1%

Memory: โœ… 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.8%


โœ… iast_aspects - 40/40

โœ… re_expand_aspect

Time: โœ… 33.952ยตs (SLO: <40.000ยตs ๐Ÿ“‰ -15.1%) vs baseline: +5.9%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… re_expand_noaspect

Time: โœ… 30.278ยตs (SLO: <40.000ยตs ๐Ÿ“‰ -24.3%) vs baseline: +6.3%

Memory: โœ… 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.7%


โœ… re_findall_aspect

Time: โœ… 2.898ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -71.0%) vs baseline: ~same

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… re_findall_noaspect

Time: โœ… 1.420ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -85.8%) vs baseline: +0.3%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0%


โœ… re_finditer_aspect

Time: โœ… 4.684ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -53.2%) vs baseline: +6.0%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… re_finditer_noaspect

Time: โœ… 1.394ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -86.1%) vs baseline: -0.8%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +5.0%


โœ… re_fullmatch_aspect

Time: โœ… 2.705ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -73.0%) vs baseline: +1.3%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.1%


โœ… re_fullmatch_noaspect

Time: โœ… 1.301ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -87.0%) vs baseline: -0.8%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.8%


โœ… re_group_aspect

Time: โœ… 2.939ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -70.6%) vs baseline: +0.8%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… re_group_noaspect

Time: โœ… 1.628ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -83.7%) vs baseline: -0.4%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… re_groups_aspect

Time: โœ… 3.355ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -66.4%) vs baseline: +9.5%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… re_groups_noaspect

Time: โœ… 1.697ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -83.0%) vs baseline: +0.4%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0%


โœ… re_match_aspect

Time: โœ… 2.953ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -70.5%) vs baseline: +9.4%

Memory: โœ… 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.7%


โœ… re_match_noaspect

Time: โœ… 1.311ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -86.9%) vs baseline: +0.4%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… re_search_aspect

Time: โœ… 2.727ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -72.7%) vs baseline: +8.2%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +5.0%


โœ… re_search_noaspect

Time: โœ… 1.198ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -88.0%) vs baseline: ~same

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.8%


โœ… re_sub_aspect

Time: โœ… 3.576ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -64.2%) vs baseline: +6.3%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.8%


โœ… re_sub_noaspect

Time: โœ… 1.560ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -84.4%) vs baseline: +2.5%

Memory: โœ… 38.024MB (SLO: <39.000MB -2.5%) vs baseline: +4.7%


โœ… re_subn_aspect

Time: โœ… 3.739ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -62.6%) vs baseline: +1.8%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7%


โœ… re_subn_noaspect

Time: โœ… 1.623ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -83.8%) vs baseline: +1.6%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7%


โœ… iastaspectsospath - 24/24

โœ… ospathbasename_aspect

Time: โœ… 4.217ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -57.8%) vs baseline: +0.2%

Memory: โœ… 38.024MB (SLO: <39.000MB -2.5%) vs baseline: +4.7%


โœ… ospathbasename_noaspect

Time: โœ… 1.085ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -89.1%) vs baseline: +0.6%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8%


โœ… ospathjoin_aspect

Time: โœ… 6.170ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -38.3%) vs baseline: +1.0%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… ospathjoin_noaspect

Time: โœ… 2.297ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -77.0%) vs baseline: -0.1%

Memory: โœ… 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.6%


โœ… ospathnormcase_aspect

Time: โœ… 3.471ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -65.3%) vs baseline: +0.4%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7%


โœ… ospathnormcase_noaspect

Time: โœ… 0.569ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -94.3%) vs baseline: -0.8%

Memory: โœ… 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.7%


โœ… ospathsplit_aspect

Time: โœ… 4.799ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -52.0%) vs baseline: +0.8%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… ospathsplit_noaspect

Time: โœ… 1.600ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -84.0%) vs baseline: +0.9%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.1%


โœ… ospathsplitdrive_aspect

Time: โœ… 3.698ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -63.0%) vs baseline: +0.9%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.7%


โœ… ospathsplitdrive_noaspect

Time: โœ… 0.699ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -93.0%) vs baseline: +0.3%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +5.0%


โœ… ospathsplitext_aspect

Time: โœ… 4.576ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -54.2%) vs baseline: +0.5%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… ospathsplitext_noaspect

Time: โœ… 1.391ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -86.1%) vs baseline: -0.5%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7%


โœ… iastaspectssplit - 12/12

โœ… rsplit_aspect

Time: โœ… 1.450ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -85.5%) vs baseline: -0.6%

Memory: โœ… 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9%


โœ… rsplit_noaspect

Time: โœ… 0.581ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -94.2%) vs baseline: -0.4%

Memory: โœ… 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0%


โœ… split_aspect

Time: โœ… 1.416ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -85.8%) vs baseline: +0.2%

Memory: โœ… 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.0%


โœ… split_noaspect

Time: โœ… 0.576ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -94.2%) vs baseline: +0.5%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9%


โœ… splitlines_aspect

Time: โœ… 1.372ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -86.3%) vs baseline: +0.4%

Memory: โœ… 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7%


โœ… splitlines_noaspect

Time: โœ… 0.585ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -94.2%) vs baseline: +0.5%

Memory: โœ… 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8%


โœ… iastpropagation - 2/2

โœ… no-propagation

Time: โœ… 48.202ยตs (SLO: <60.000ยตs ๐Ÿ“‰ -19.7%) vs baseline: -1.4%

Memory: โœ… 37.749MB (SLO: <39.000MB -3.2%) vs baseline: +4.9%


โœ… otelsdkspan - 24/24

โœ… add-event

Time: โœ… 40.961ms (SLO: <42.000ms -2.5%) vs baseline: +1.3%

Memory: โœ… 34.957MB (SLO: <39.000MB ๐Ÿ“‰ -10.4%) vs baseline: +5.0%


โœ… add-link

Time: โœ… 36.332ms (SLO: <38.550ms -5.8%) vs baseline: ~same

Memory: โœ… 34.937MB (SLO: <39.000MB ๐Ÿ“‰ -10.4%) vs baseline: +5.7%


โœ… add-metrics

Time: โœ… 219.766ms (SLO: <232.000ms -5.3%) vs baseline: +0.3%

Memory: โœ… 34.918MB (SLO: <39.000MB ๐Ÿ“‰ -10.5%) vs baseline: +6.1%


โœ… add-tags

Time: โœ… 212.674ms (SLO: <221.600ms -4.0%) vs baseline: +1.1%

Memory: โœ… 34.957MB (SLO: <39.000MB ๐Ÿ“‰ -10.4%) vs baseline: +6.1%


โœ… get-context

Time: โœ… 29.508ms (SLO: <31.300ms -5.7%) vs baseline: +1.2%

Memory: โœ… 34.583MB (SLO: <39.000MB ๐Ÿ“‰ -11.3%) vs baseline: +5.0%


โœ… is-recording

Time: โœ… 29.160ms (SLO: <31.000ms -5.9%) vs baseline: ~same

Memory: โœ… 34.918MB (SLO: <39.000MB ๐Ÿ“‰ -10.5%) vs baseline: +6.1%


โœ… record-exception

Time: โœ… 64.451ms (SLO: <65.850ms -2.1%) vs baseline: +2.0%

Memory: โœ… 34.977MB (SLO: <39.000MB ๐Ÿ“‰ -10.3%) vs baseline: +5.9%


โœ… set-status

Time: โœ… 31.922ms (SLO: <34.150ms -6.5%) vs baseline: -0.7%

Memory: โœ… 34.878MB (SLO: <39.000MB ๐Ÿ“‰ -10.6%) vs baseline: +6.1%


โœ… start

Time: โœ… 28.773ms (SLO: <30.150ms -4.6%) vs baseline: ~same

Memory: โœ… 34.898MB (SLO: <39.000MB ๐Ÿ“‰ -10.5%) vs baseline: +5.8%


โœ… start-finish

Time: โœ… 33.803ms (SLO: <35.350ms -4.4%) vs baseline: -0.4%

Memory: โœ… 34.937MB (SLO: <39.000MB ๐Ÿ“‰ -10.4%) vs baseline: +5.9%


โœ… start-finish-telemetry

Time: โœ… 33.807ms (SLO: <35.450ms -4.6%) vs baseline: -0.5%

Memory: โœ… 34.957MB (SLO: <39.000MB ๐Ÿ“‰ -10.4%) vs baseline: +5.7%


โœ… update-name

Time: โœ… 30.975ms (SLO: <33.400ms -7.3%) vs baseline: -0.2%

Memory: โœ… 34.839MB (SLO: <39.000MB ๐Ÿ“‰ -10.7%) vs baseline: +5.8%


โœ… otelspan - 22/22

โœ… add-event

Time: โœ… 39.608ms (SLO: <47.150ms ๐Ÿ“‰ -16.0%) vs baseline: -1.5%

Memory: โœ… 43.737MB (SLO: <47.000MB -6.9%) vs baseline: +4.8%


โœ… add-metrics

Time: โœ… 316.646ms (SLO: <344.800ms -8.2%) vs baseline: -0.8%

Memory: โœ… 652.210MB (SLO: <675.000MB -3.4%) vs baseline: +4.9%


โœ… add-tags

Time: โœ… 286.040ms (SLO: <314.000ms -8.9%) vs baseline: -0.2%

Memory: โœ… 652.591MB (SLO: <675.000MB -3.3%) vs baseline: +4.9%


โœ… get-context

Time: โœ… 81.792ms (SLO: <92.350ms ๐Ÿ“‰ -11.4%) vs baseline: +2.0%

Memory: โœ… 39.685MB (SLO: <46.500MB ๐Ÿ“‰ -14.7%) vs baseline: +5.0%


โœ… is-recording

Time: โœ… 37.976ms (SLO: <44.500ms ๐Ÿ“‰ -14.7%) vs baseline: ~same

Memory: โœ… 43.210MB (SLO: <47.500MB -9.0%) vs baseline: +5.0%


โœ… record-exception

Time: โœ… 57.650ms (SLO: <67.650ms ๐Ÿ“‰ -14.8%) vs baseline: -0.9%

Memory: โœ… 39.939MB (SLO: <47.000MB ๐Ÿ“‰ -15.0%) vs baseline: +5.0%


โœ… set-status

Time: โœ… 43.301ms (SLO: <50.400ms ๐Ÿ“‰ -14.1%) vs baseline: -1.2%

Memory: โœ… 43.173MB (SLO: <47.000MB -8.1%) vs baseline: +4.8%


โœ… start

Time: โœ… 36.783ms (SLO: <43.450ms ๐Ÿ“‰ -15.3%) vs baseline: -1.3%

Memory: โœ… 43.201MB (SLO: <47.000MB -8.1%) vs baseline: +5.2%


โœ… start-finish

Time: โœ… 81.163ms (SLO: <88.000ms -7.8%) vs baseline: -0.5%

Memory: โœ… 34.544MB (SLO: <46.500MB ๐Ÿ“‰ -25.7%) vs baseline: +4.7%


โœ… start-finish-telemetry

Time: โœ… 82.667ms (SLO: <89.000ms -7.1%) vs baseline: -0.6%

Memory: โœ… 34.583MB (SLO: <46.500MB ๐Ÿ“‰ -25.6%) vs baseline: +5.0%


โœ… update-name

Time: โœ… 38.339ms (SLO: <45.150ms ๐Ÿ“‰ -15.1%) vs baseline: -1.0%

Memory: โœ… 43.522MB (SLO: <47.000MB -7.4%) vs baseline: +5.0%


โœ… packagespackageforrootmodulemapping - 4/4

โœ… cache_off

Time: โœ… 338.061ms (SLO: <354.300ms -4.6%) vs baseline: -0.6%

Memory: โœ… 38.245MB (SLO: <40.000MB -4.4%) vs baseline: +6.1%


โœ… cache_on

Time: โœ… 0.387ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -96.1%) vs baseline: +1.6%

Memory: โœ… 36.982MB (SLO: <39.000MB -5.2%) vs baseline: +6.2%


โœ… packagesupdateimporteddependencies - 24/24

โœ… import_many

Time: โœ… 154.522ยตs (SLO: <170.000ยตs -9.1%) vs baseline: -0.5%

Memory: โœ… 37.181MB (SLO: <38.500MB -3.4%) vs baseline: +5.0%


โœ… import_many_cached

Time: โœ… 121.670ยตs (SLO: <130.000ยตs -6.4%) vs baseline: +0.4%

Memory: โœ… 37.080MB (SLO: <38.500MB -3.7%) vs baseline: +4.6%


โœ… import_many_stdlib

Time: โœ… 1.620ms (SLO: <1.750ms -7.4%) vs baseline: -1.1%

Memory: โœ… 37.294MB (SLO: <38.500MB -3.1%) vs baseline: +5.1%


โœ… import_many_stdlib_cached

Time: โœ… 0.981ms (SLO: <1.100ms ๐Ÿ“‰ -10.8%) vs baseline: +0.6%

Memory: โœ… 37.243MB (SLO: <38.500MB -3.3%) vs baseline: +4.6%


โœ… import_many_unknown

Time: โœ… 829.872ยตs (SLO: <890.000ยตs -6.8%) vs baseline: -1.0%

Memory: โœ… 37.423MB (SLO: <38.500MB -2.8%) vs baseline: +5.0%


โœ… import_many_unknown_cached

Time: โœ… 788.292ยตs (SLO: <870.000ยตs -9.4%) vs baseline: ~same

Memory: โœ… 37.297MB (SLO: <38.500MB -3.1%) vs baseline: +5.0%


โœ… import_one

Time: โœ… 19.790ยตs (SLO: <30.000ยตs ๐Ÿ“‰ -34.0%) vs baseline: ~same

Memory: โœ… 37.177MB (SLO: <39.000MB -4.7%) vs baseline: +5.3%


โœ… import_one_cache

Time: โœ… 6.281ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -37.2%) vs baseline: -0.7%

Memory: โœ… 37.164MB (SLO: <38.500MB -3.5%) vs baseline: +4.9%


โœ… import_one_stdlib

Time: โœ… 18.892ยตs (SLO: <20.000ยตs -5.5%) vs baseline: +0.3%

Memory: โœ… 37.143MB (SLO: <38.500MB -3.5%) vs baseline: +5.1%


โœ… import_one_stdlib_cache

Time: โœ… 6.295ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -37.1%) vs baseline: +0.6%

Memory: โœ… 37.075MB (SLO: <38.500MB -3.7%) vs baseline: +4.7%


โœ… import_one_unknown

Time: โœ… 45.328ยตs (SLO: <50.000ยตs -9.3%) vs baseline: +0.3%

Memory: โœ… 37.166MB (SLO: <38.500MB -3.5%) vs baseline: +5.0%


โœ… import_one_unknown_cache

Time: โœ… 6.265ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -37.3%) vs baseline: -0.5%

Memory: โœ… 37.071MB (SLO: <38.500MB -3.7%) vs baseline: +4.6%


โœ… ratelimiter - 12/12

โœ… defaults

Time: โœ… 2.343ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -76.6%) vs baseline: -0.2%

Memory: โœ… 31.811MB (SLO: <34.000MB -6.4%) vs baseline: +5.2%


โœ… high_rate_limit

Time: โœ… 2.386ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -76.1%) vs baseline: -1.3%

Memory: โœ… 31.772MB (SLO: <34.000MB -6.6%) vs baseline: +4.7%


โœ… long_window

Time: โœ… 2.330ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -76.7%) vs baseline: -1.3%

Memory: โœ… 31.792MB (SLO: <34.000MB -6.5%) vs baseline: +5.0%


โœ… low_rate_limit

Time: โœ… 2.354ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -76.5%) vs baseline: -0.6%

Memory: โœ… 31.792MB (SLO: <34.000MB -6.5%) vs baseline: +4.9%


โœ… no_rate_limit

Time: โœ… 0.826ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -91.7%) vs baseline: -0.2%

Memory: โœ… 31.733MB (SLO: <34.000MB -6.7%) vs baseline: +4.5%


โœ… short_window

Time: โœ… 2.482ยตs (SLO: <10.000ยตs ๐Ÿ“‰ -75.2%) vs baseline: -0.4%

Memory: โœ… 31.752MB (SLO: <34.000MB -6.6%) vs baseline: +4.7%


โœ… recursivecomputation - 8/8

โœ… deep

Time: โœ… 308.650ms (SLO: <320.950ms -3.8%) vs baseline: ~same

Memory: โœ… 32.912MB (SLO: <34.500MB -4.6%) vs baseline: +4.7%


โœ… deep-profiled

Time: โœ… 327.543ms (SLO: <359.150ms -8.8%) vs baseline: -0.1%

Memory: โœ… 37.556MB (SLO: <39.000MB -3.7%) vs baseline: +5.7%


โœ… medium

Time: โœ… 7.038ms (SLO: <7.400ms -4.9%) vs baseline: ~same

Memory: โœ… 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.8%


โœ… shallow

Time: โœ… 0.947ms (SLO: <1.050ms -9.8%) vs baseline: -0.2%

Memory: โœ… 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +5.0%


โœ… samplingrules - 8/8

โœ… average_match

Time: โœ… 136.580ยตs (SLO: <290.000ยตs ๐Ÿ“‰ -52.9%) vs baseline: -1.1%

Memory: โœ… 32.224MB (SLO: <34.000MB -5.2%) vs baseline: +5.2%


โœ… high_match

Time: โœ… 172.742ยตs (SLO: <480.000ยตs ๐Ÿ“‰ -64.0%) vs baseline: -1.0%

Memory: โœ… 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.8%


โœ… low_match

Time: โœ… 98.620ยตs (SLO: <120.000ยตs ๐Ÿ“‰ -17.8%) vs baseline: -0.9%

Memory: โœ… 600.918MB (SLO: <700.000MB ๐Ÿ“‰ -14.2%) vs baseline: +4.9%


โœ… very_low_match

Time: โœ… 2.654ms (SLO: <8.500ms ๐Ÿ“‰ -68.8%) vs baseline: -0.9%

Memory: โœ… 68.354MB (SLO: <75.000MB -8.9%) vs baseline: +4.9%


โœ… sethttpmeta - 32/32

โœ… all-disabled

Time: โœ… 10.520ยตs (SLO: <20.000ยตs ๐Ÿ“‰ -47.4%) vs baseline: +0.4%

Memory: โœ… 32.578MB (SLO: <34.000MB -4.2%) vs baseline: +4.9%


โœ… all-enabled

Time: โœ… 40.136ยตs (SLO: <50.000ยตs ๐Ÿ“‰ -19.7%) vs baseline: +0.2%

Memory: โœ… 32.558MB (SLO: <34.000MB -4.2%) vs baseline: +4.9%


โœ… collectipvariant_exists

Time: โœ… 41.605ยตs (SLO: <50.000ยตs ๐Ÿ“‰ -16.8%) vs baseline: +1.9%

Memory: โœ… 32.539MB (SLO: <34.000MB -4.3%) vs baseline: +4.7%


โœ… no-collectipvariant

Time: โœ… 40.232ยตs (SLO: <50.000ยตs ๐Ÿ“‰ -19.5%) vs baseline: +0.5%

Memory: โœ… 32.578MB (SLO: <34.000MB -4.2%) vs baseline: +4.7%


โœ… no-useragentvariant

Time: โœ… 38.900ยตs (SLO: <50.000ยตs ๐Ÿ“‰ -22.2%) vs baseline: +0.4%

Memory: โœ… 32.578MB (SLO: <34.000MB -4.2%) vs baseline: +4.8%


โœ… obfuscation-no-query

Time: โœ… 40.490ยตs (SLO: <50.000ยตs ๐Ÿ“‰ -19.0%) vs baseline: ~same

Memory: โœ… 32.558MB (SLO: <34.000MB -4.2%) vs baseline: +4.9%


โœ… obfuscation-regular-case-explicit-query

Time: โœ… 76.077ยตs (SLO: <90.000ยตs ๐Ÿ“‰ -15.5%) vs baseline: +0.7%

Memory: โœ… 32.873MB (SLO: <34.000MB -3.3%) vs baseline: +4.4%


โœ… obfuscation-regular-case-implicit-query

Time: โœ… 76.300ยตs (SLO: <90.000ยตs ๐Ÿ“‰ -15.2%) vs baseline: -0.3%

Memory: โœ… 32.991MB (SLO: <34.000MB -3.0%) vs baseline: +4.9%


โœ… obfuscation-send-querystring-disabled

Time: โœ… 154.524ยตs (SLO: <170.000ยตs -9.1%) vs baseline: ~same

Memory: โœ… 32.971MB (SLO: <34.500MB -4.4%) vs baseline: +4.7%


โœ… obfuscation-worst-case-explicit-query

Time: โœ… 147.248ยตs (SLO: <160.000ยตs -8.0%) vs baseline: -0.3%

Memory: โœ… 32.912MB (SLO: <34.500MB -4.6%) vs baseline: +4.9%


โœ… obfuscation-worst-case-implicit-query

Time: โœ… 154.675ยตs (SLO: <170.000ยตs -9.0%) vs baseline: ~same

Memory: โœ… 33.010MB (SLO: <34.500MB -4.3%) vs baseline: +5.0%


โœ… useragentvariant_exists_1

Time: โœ… 39.498ยตs (SLO: <50.000ยตs ๐Ÿ“‰ -21.0%) vs baseline: +0.3%

Memory: โœ… 32.637MB (SLO: <34.000MB -4.0%) vs baseline: +5.2%


โœ… useragentvariant_exists_2

Time: โœ… 41.330ยตs (SLO: <50.000ยตs ๐Ÿ“‰ -17.3%) vs baseline: +1.7%

Memory: โœ… 32.499MB (SLO: <34.000MB -4.4%) vs baseline: +4.5%


โœ… useragentvariant_exists_3

Time: โœ… 40.031ยตs (SLO: <50.000ยตs ๐Ÿ“‰ -19.9%) vs baseline: -0.2%

Memory: โœ… 32.558MB (SLO: <34.000MB -4.2%) vs baseline: +4.9%


โœ… useragentvariant_not_exists_1

Time: โœ… 39.643ยตs (SLO: <50.000ยตs ๐Ÿ“‰ -20.7%) vs baseline: +0.5%

Memory: โœ… 32.539MB (SLO: <34.000MB -4.3%) vs baseline: +4.7%


โœ… useragentvariant_not_exists_2

Time: โœ… 39.648ยตs (SLO: <50.000ยตs ๐Ÿ“‰ -20.7%) vs baseline: +0.6%

Memory: โœ… 32.578MB (SLO: <34.000MB -4.2%) vs baseline: +4.9%


โœ… span - 26/26

โœ… add-event

Time: โœ… 19.623ms (SLO: <22.500ms ๐Ÿ“‰ -12.8%) vs baseline: -2.6%

Memory: โœ… 48.837MB (SLO: <53.000MB -7.9%) vs baseline: +4.8%


โœ… add-metrics

Time: โœ… 89.371ms (SLO: <93.500ms -4.4%) vs baseline: -0.9%

Memory: โœ… 735.531MB (SLO: <961.000MB ๐Ÿ“‰ -23.5%) vs baseline: +4.8%


โœ… add-tags

Time: โœ… 146.894ms (SLO: <155.000ms -5.2%) vs baseline: +0.2%

Memory: โœ… 735.223MB (SLO: <962.500MB ๐Ÿ“‰ -23.6%) vs baseline: +4.7%


โœ… get-context

Time: โœ… 17.772ms (SLO: <20.500ms ๐Ÿ“‰ -13.3%) vs baseline: -1.9%

Memory: โœ… 47.533MB (SLO: <53.000MB ๐Ÿ“‰ -10.3%) vs baseline: +4.8%


โœ… is-recording

Time: โœ… 18.550ms (SLO: <20.500ms -9.5%) vs baseline: +0.8%

Memory: โœ… 47.448MB (SLO: <53.000MB ๐Ÿ“‰ -10.5%) vs baseline: +4.4%


โœ… record-exception

Time: โœ… 36.858ms (SLO: <40.000ms -7.9%) vs baseline: -1.7%

Memory: โœ… 42.094MB (SLO: <53.000MB ๐Ÿ“‰ -20.6%) vs baseline: +4.8%


โœ… set-status

Time: โœ… 20.090ms (SLO: <22.000ms -8.7%) vs baseline: -0.3%

Memory: โœ… 47.545MB (SLO: <53.000MB ๐Ÿ“‰ -10.3%) vs baseline: +4.9%


โœ… start

Time: โœ… 18.209ms (SLO: <20.500ms ๐Ÿ“‰ -11.2%) vs baseline: -0.4%

Memory: โœ… 47.575MB (SLO: <53.000MB ๐Ÿ“‰ -10.2%) vs baseline: +5.0%


โœ… start-finish

Time: โœ… 50.100ms (SLO: <52.500ms -4.6%) vs baseline: -0.9%

Memory: โœ… 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +5.0%


โœ… start-finish-telemetry

Time: โœ… 52.111ms (SLO: <54.500ms -4.4%) vs baseline: +0.7%

Memory: โœ… 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +5.1%


โœ… start-finish-traceid128

Time: โœ… 54.533ms (SLO: <57.000ms -4.3%) vs baseline: +1.6%

Memory: โœ… 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +5.0%


โœ… start-traceid128

Time: โœ… 18.137ms (SLO: <22.500ms ๐Ÿ“‰ -19.4%) vs baseline: -2.7%

Memory: โœ… 47.627MB (SLO: <53.000MB ๐Ÿ“‰ -10.1%) vs baseline: +4.9%


โœ… update-name

Time: โœ… 18.569ms (SLO: <22.000ms ๐Ÿ“‰ -15.6%) vs baseline: -0.8%

Memory: โœ… 48.283MB (SLO: <53.000MB -8.9%) vs baseline: +4.9%


โœ… tracer - 6/6

โœ… large

Time: โœ… 28.404ms (SLO: <32.950ms ๐Ÿ“‰ -13.8%) vs baseline: ~same

Memory: โœ… 33.148MB (SLO: <34.500MB -3.9%) vs baseline: +4.4%


โœ… medium

Time: โœ… 2.793ms (SLO: <3.200ms ๐Ÿ“‰ -12.7%) vs baseline: -0.3%

Memory: โœ… 32.145MB (SLO: <34.000MB -5.5%) vs baseline: +4.7%


โœ… small

Time: โœ… 315.015ยตs (SLO: <370.000ยตs ๐Ÿ“‰ -14.9%) vs baseline: -1.6%

Memory: โœ… 32.185MB (SLO: <34.000MB -5.3%) vs baseline: +4.9%

โ„น๏ธ Scenarios Missing SLO Configuration (9 scenarios)

The following scenarios exist in candidate data but have no SLO thresholds configured:

  • coreapiscenario-core_dispatch_listeners
  • coreapiscenario-core_dispatch_no_listeners
  • coreapiscenario-core_dispatch_with_results_listeners
  • coreapiscenario-core_dispatch_with_results_no_listeners
  • djangosimple-baseline
  • errortrackingdjangosimple-baseline
  • errortrackingflasksqli-baseline
  • flasksimple-baseline
  • flasksqli-baseline

pr-commenter[bot] avatar Jul 29 '25 11:07 pr-commenter[bot]

One thing that came up in our recent discussion I want to re-state here: I think we need to make sure that starting and stopping the periodic threads doesn't indefinitely delay the periodic callbacks. Specifically, thinking of something like profiling, where we upload data every 60 seconds. If we exit the thread, then the 60 second timer is restarted when the thread is restarted. And so if a program forks more than once every 60 seconds we will never actually upload a profile from the parent process. I think if we stick to this approach, we probably want a deadline for the periodic thread. And the time the thread sleeps is relative to the time left until the deadline. The deadline wouldn't reset by default when stopping/restarting the thread, only when the callback is called. LMK if that makes sense, I'm happy to sketch it out more.

nsrip-dd avatar Aug 12 '25 14:08 nsrip-dd

we need to make sure that starting and stopping the periodic threads doesn't indefinitely delay the periodic callbacks.

does 817730d8796cf406651590daf9a2ffd94050bbf9 work?

P403n1x87 avatar Aug 13 '25 09:08 P403n1x87

This is currently blocked by the profiler not adopting the new fork-safe periodic thread to manage the stack v2 sampling.

P403n1x87 avatar Oct 13 '25 09:10 P403n1x87

@taegyunkim do we have an issue tracking the blocker?

tylfin avatar Oct 23 '25 20:10 tylfin