Skip to content

add event loop and gc configuration for runtime metrics #5913

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

rochdev
Copy link
Member

@rochdev rochdev commented Jun 18, 2025

What does this PR do?

Add event loop and GC configuration for runtime metrics.

Motivation

Allow finer control on the types of metrics to collect, especially on the native front. Allowing to pick which GC collector to use can also be used to work around issues with one of the collector by temporarily switching to a different one.

Copy link

github-actions bot commented Jun 18, 2025

Overall package size

Self size: 9.72 MB
Deduped: 106.23 MB
No deduping: 106.74 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 8.5.2 | 19.33 MB | 19.34 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.8.2 | 9.56 MB | 9.93 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.3 | 2.95 MB | 5.6 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.14.0 | 120.58 kB | 841.68 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.2 | 53.63 kB | 53.63 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | dc-polyfill | 0.1.9 | 25.11 kB | 25.11 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.2 | 23.54 kB | 23.54 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |

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

Copy link

codecov bot commented Jun 18, 2025

Codecov Report

Attention: Patch coverage is 87.50000% with 4 lines in your changes missing coverage. Please review.

Project coverage is 80.75%. Comparing base (a408cd7) to head (ca81a0f).

Files with missing lines Patch % Lines
...es/dd-trace/src/runtime_metrics/runtime_metrics.js 73.33% 4 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##           master    #5913   +/-   ##
=======================================
  Coverage   80.75%   80.75%           
=======================================
  Files         462      462           
  Lines       19924    19941   +17     
=======================================
+ Hits        16090    16104   +14     
- Misses       3834     3837    +3     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Jun 18, 2025

Datadog Report

Branch report: runtime-metrics-gc-loop-config
Commit report: 9a55f16
Test service: dd-trace-js-integration-tests

✅ 0 Failed, 1255 Passed, 0 Skipped, 20m 35.9s Total Time

@pr-commenter
Copy link

pr-commenter bot commented Jun 18, 2025

Benchmarks

Benchmark execution time: 2025-06-19 15:51:13

Comparing candidate commit ca81a0f in PR branch runtime-metrics-gc-loop-config with baseline commit a408cd7 in branch master.

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

@rochdev rochdev force-pushed the runtime-metrics-gc-loop-config branch from 948ca7d to ca81a0f Compare June 19, 2025 15:43
@rochdev rochdev marked this pull request as ready for review June 19, 2025 15:55
@rochdev rochdev requested a review from a team as a code owner June 19, 2025 15:55
Comment on lines +578 to +579
defaults['runtimeMetrics.gc'] = true
defaults['runtimeMetrics.gcCollector'] = 'default'
Copy link
Contributor

Choose a reason for hiding this comment

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

Does it make sense to have these as two separate config properties? You could have just one (just keep .gc?) and introduce an 'off' value (and maybe use 'on' instead of 'default' for consistency.) You could still have config translate incoming env var values of '0', '1', 'true', 'false' to off and on. Of course, for consistency you should then probably allow use of off and on as keywords for the other two properties a well (enabled and eventLoop.) Maybe we should just add on and off as recognized values in util.js.

We recently added a config for choosing the compression method for uploading profiles and use on/off there in addition to specifically naming compression methods.

Of course, if you envision there could be even more config options for GC metrics in the future, then it may make sense to keep them as separate properties, but we should assess how likely is that.

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