-
Notifications
You must be signed in to change notification settings - Fork 15
[profiling] Rust driver for python profiler #1084
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
base: main
Are you sure you want to change the base?
Conversation
BenchmarksComparisonBenchmark execution time: 2025-07-08 20:01:37 Comparing candidate commit 05e60f6 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 52 metrics, 2 unstable metrics. CandidateCandidate benchmark detailsGroup 1
Group 2
Group 3
Group 4
Group 5
Group 6
Group 7
Group 8
Group 9
Group 10
Group 11
Group 12
Group 13
BaselineOmitted due to size. |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1084 +/- ##
==========================================
+ Coverage 71.23% 71.31% +0.08%
==========================================
Files 343 349 +6
Lines 52393 52981 +588
==========================================
+ Hits 37321 37786 +465
- Misses 15072 15195 +123
🚀 New features to boost your workflow:
|
Artifact Size Benchmark Reportaarch64-alpine-linux-musl
aarch64-unknown-linux-gnu
libdatadog-x64-windows
libdatadog-x86-windows
x86_64-alpine-linux-musl
x86_64-unknown-linux-gnu
|
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. To override this behavior, add the keep-open label or update the PR. |
What does this PR do?
POC for a channel based driver for the Python profiler
Motivation
Currently Python profiler uses lock based concurrency, which makes handling forks difficult.
It also can cost performance, as all operations require the lock.
Moving to a channel based system allows everything to live on one place one one thread, allowing us to do clean shutdown.
And it allows the stuff on that thread to happen with no synchronization, e.g. making it easier to use the new interning API in Echion
Additional Notes
This is designed to be a thin wrapper of what we already have in python, hence the use of
void*
and callbacks.In the future, some of this should move into pure rust.
How to test the change?
Describe here in detail how the change can be validated.