-
Notifications
You must be signed in to change notification settings - Fork 167
feat(profiling): process_tags on uploader #3609
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
Conversation
aabd543 to
427e20d
Compare
Benchmarks [ profiler ]Benchmark execution time: 2026-02-12 11:28:18 Comparing candidate commit f3891e0 in PR branch Found 2 performance improvements and 0 performance regressions! Performance is the same for 28 metrics, 6 unstable metrics. scenario:walk_stack/50
scenario:walk_stack/99
|
Benchmarks [ tracer ]Benchmark execution time: 2026-02-12 12:09:06 Comparing candidate commit f3891e0 in PR branch Found 0 performance improvements and 5 performance regressions! Performance is the same for 186 metrics, 3 unstable metrics. scenario:MessagePackSerializationBench/benchMessagePackSerialization
scenario:SamplingRuleMatchingBench/benchRegexMatching1
scenario:SamplingRuleMatchingBench/benchRegexMatching2
scenario:SamplingRuleMatchingBench/benchRegexMatching3
scenario:SamplingRuleMatchingBench/benchRegexMatching4
|
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #3609 +/- ##
=======================================
Coverage 62.11% 62.11%
=======================================
Files 141 141
Lines 13387 13387
Branches 1753 1753
=======================================
Hits 8315 8315
Misses 4273 4273
Partials 799 799 Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
morrisonlevi
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved, but I have a question!
…heck on appsec extension (#3604) Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>
* refactor(profiling): use module globals for ZMM state * style: fix clippy warnings * Apply suggestions from code review Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com> * docs: note ZTS vs NTS differences --------- Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com>
* refactor(profiling): extract Backtrace type In a future change, this may hold a refcount for another object, so we need to encapsulate it. * fix `test_collect_stack_sample` not running --------- Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com>
* feat(profiling): internal metrics for overhead * feat(profiling): move CPU time capture to include serialization for `ddprof_upload` for current profile exported Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(profiling): add CPU time tracking for `ddprof_time` thread Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(profiling): separate CPU time tracking per background thread Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…ame_crash.phpt on all version (#3632) Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>
Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
* test(CI): add aggressive git cleanup on windows runner Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com> * test(CI): add manual cleanup in before_script step Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com> --------- Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>
* feat(CI): add healthcheck to SQLSRV server setup Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com> * chore: add troubleshooting script for SQLSRV Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com> * feat: add explicit memory limit and paths Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com> * chore: replace sqlsrv docker image Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com> --------- Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>
* fix(logging): fsync crash logs before _Exit() to prevent data loss When a SIGSEGV occurs, the signal handler logs "Segmentation fault encountered" and then calls _Exit() which terminates the process immediately. Without fsync(), kernel write buffers may not be flushed to disk before termination, causing a race condition where the error log file is sometimes not created. This fix adds fsync() on Unix/Linux and _commit() on Windows after write() in ddtrace_log_with_time() to ensure crash logs persist to disk before process termination. The issue affects production (rare but possible during power loss, kernel panic, or I/O errors) and causes consistent test failures where tests check for log files immediately after crashes (before kernel writeback completes). Fixes flaky test_metrics SigSegVTest::testGet failures on Kubernetes where dd_php_error.log was not being created consistently. * fix(signals): move flush in sigsegv handler Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com> --------- Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>
* init process tags for APM Co-Authored-By: PROFeNoM <alexandre.choura@datadoghq.com> * feat(process_tags): add process_tags to tracing payloads * small auto review and fix test * bwoebi review * fix test * Adds process_tags to live debugger payloads * temporary libdatadog bump * auto review * bump libdatadog * fix build * update makefile && make cbindgen * fixing test * fixing test * fix appsec tests --------- Co-authored-by: PROFeNoM <alexandre.choura@datadoghq.com>
* chore(profiling): update libdatadog 26 to 27
6011cf0 to
88fad58
Compare
Description
This PR implements this RFC for Profiling by adding a process tags field to the Uploader from the tracer.
Note that if process_tags are deactivated, the value passed to the profiler will be an empty string.
Here are an example in datadog:

(see entrypoint.basedir/entrypoint.name fields).
No tests were added at it does not seem to be possible right now (because of the interaction tracer <> profiler)
Reviewer checklist