Skip to content
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

Keep a profiling context object in spans #4763

Merged
merged 1 commit into from
Oct 8, 2024

Conversation

szegedi
Copy link
Contributor

@szegedi szegedi commented Oct 4, 2024

What does this PR do?

Keeps a profiling context object in spans. Allows for cheapest sampling context updates on async context switches. We already keep profiling data (web tags) associated with spans, this update rationalizes how we store data there.

Motivation

Two reasons:

  • An async context change in fast path now boils down to just this._currentContext.ref = storage.getStore().span[ProfilingContext]. It doesn't get cheaper than that.
  • This creates a natural spot where to hang further profiling-specific context data.

Additional Notes

This doesn't cause significant increase in memory use. Profiling context objects are small (3 properties) and their property values are object references to data available elsewhere in a span. Every context is only associated with its span until the span finishes, when the context is proactively removed, just as before with web tags.

Jira ticket: PROF-10669

Copy link

github-actions bot commented Oct 4, 2024

Overall package size

Self size: 7.39 MB
Deduped: 63.17 MB
No deduping: 63.45 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/native-appsec | 8.1.1 | 18.67 MB | 18.68 MB | | @datadog/native-iast-taint-tracking | 3.1.0 | 12.27 MB | 12.28 MB | | @datadog/pprof | 5.3.0 | 9.85 MB | 10.22 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.5.0 | 2.51 MB | 2.59 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 2.0.0 | 898.77 kB | 1.3 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | jsonpath-plus | 9.0.0 | 580.4 kB | 1.03 MB | | import-in-the-middle | 1.11.2 | 112.74 kB | 826.22 kB | | msgpack-lite | 0.1.26 | 201.16 kB | 281.59 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.0 | 109.9 kB | 109.9 kB | | semver | 7.6.3 | 95.82 kB | 95.82 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | lru-cache | 7.14.0 | 74.95 kB | 74.95 kB | | ignore | 5.3.1 | 51.46 kB | 51.46 kB | | int64-buffer | 0.1.10 | 49.18 kB | 49.18 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | path-to-regexp | 0.1.10 | 6.38 kB | 6.38 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@pr-commenter
Copy link

pr-commenter bot commented Oct 4, 2024

Benchmarks

Benchmark execution time: 2024-10-08 09:12:06

Comparing candidate commit fdc13aa in PR branch szegedi/span-profiling-context with baseline commit 7f93d36 in branch master.

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

@szegedi szegedi force-pushed the szegedi/span-profiling-context branch from eecfd0e to 90a3213 Compare October 4, 2024 11:27
@szegedi szegedi force-pushed the szegedi/span-profiling-context branch from 90a3213 to 084fafb Compare October 7, 2024 11:42
@szegedi szegedi marked this pull request as ready for review October 7, 2024 14:36
@szegedi szegedi requested a review from a team as a code owner October 7, 2024 14:36
…b tags.

Allows for cheapest sampling context updates on async context switches.
@szegedi szegedi force-pushed the szegedi/span-profiling-context branch from 084fafb to fdc13aa Compare October 8, 2024 09:04
Copy link
Collaborator

@nsavoire nsavoire left a comment

Choose a reason for hiding this comment

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

LGTM, this nicely simplifies the code !

@szegedi szegedi merged commit 2d175d3 into master Oct 8, 2024
196 checks passed
@szegedi szegedi deleted the szegedi/span-profiling-context branch October 8, 2024 15:16
bengl pushed a commit that referenced this pull request Oct 16, 2024
Allows for cheapest sampling context updates on async context switches and opens the path for profiling custom context.
bengl pushed a commit that referenced this pull request Oct 16, 2024
Allows for cheapest sampling context updates on async context switches and opens the path for profiling custom context.
This was referenced Oct 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants