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

[DI] Improve internal caching algorithm resource overhead #4864

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

Conversation

watson
Copy link
Collaborator

@watson watson commented Nov 6, 2024

Use ttl-set instead of lru-cache for keeping track of when the Dynamic Instrumentation backend should be updated with new probe acknowledgements.

The ttl-set package acts like a JavaScript Set, but with a TTL on entries and is extremely fast and with low overhead.

Bug fix

For Node.js 18, this also fixes a bug/race condition related to lru-cache that would occur under heavy load:

TypeError: Cannot read properties of undefined (reading 'Symbol(kResourceStore)')
    at AsyncLocalStorage._propagate (node:async_hooks:312:34)
    at AsyncHook.init (node:async_hooks:271:22)
    at emitInitNative (node:internal/async_hooks:200:43)
    at emitInitScript (node:internal/async_hooks:503:3)
    at initAsyncResource (node:internal/timers:164:5)
    at new Timeout (node:internal/timers:198:5)
    at setTimeout (node:timers:165:19)
    at getNow (/Users/thomas.watson/go/src/github.com/DataDog/node_modules/dd-trace/node_modules/lru-cache/index.js:355:19)
    at LRUCache.isStale (/Users/thomas.watson/go/src/github.com/DataDog/node_modules/dd-trace/node_modules/lru-cache/index.js:383:23)
    at LRUCache.has (/Users/thomas.watson/go/src/github.com/DataDog/node_modules/dd-trace/node_modules/lru-cache/index.js:795:17)

@watson watson requested review from a team as code owners November 6, 2024 10:47
Copy link
Collaborator Author

watson commented Nov 6, 2024

This stack of pull requests is managed by Graphite. Learn more about stacking.

Copy link

github-actions bot commented Nov 6, 2024

Overall package size

Self size: 7.93 MB
Deduped: 64.96 MB
No deduping: 65.3 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/native-appsec | 8.2.1 | 19.18 MB | 19.19 MB | | @datadog/native-iast-taint-tracking | 3.2.0 | 13.9 MB | 13.91 MB | | @datadog/pprof | 5.4.1 | 9.76 MB | 10.13 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.5.0 | 2.51 MB | 2.65 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.0.1 | 1.06 MB | 1.46 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 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 | | 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.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 | | 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 | | ttl-set | 1.0.0 | 4.61 kB | 9.69 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

@watson watson force-pushed the watson/11-05-_di_improve_internal_caching_algorithm_resource_overhead branch from 222b2a3 to 10f7df8 Compare November 6, 2024 10:49
@watson watson self-assigned this Nov 6, 2024
@pr-commenter
Copy link

pr-commenter bot commented Nov 6, 2024

Benchmarks

Benchmark execution time: 2024-11-06 11:04:59

Comparing candidate commit 10f7df8 in PR branch watson/11-05-_di_improve_internal_caching_algorithm_resource_overhead with baseline commit 91c4371 in branch master.

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

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.

1 participant