-
Notifications
You must be signed in to change notification settings - Fork 13
[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-06-12 14:41:15 Comparing candidate commit 4cb37b5 in PR branch Found 4 performance improvements and 1 performance regressions! Performance is the same for 47 metrics, 2 unstable metrics. scenario:credit_card/is_card_number/ 378282246310005
scenario:credit_card/is_card_number/378282246310005
scenario:sql/obfuscate_sql_string
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 70.96% 70.72% -0.24%
==========================================
Files 330 337 +7
Lines 49898 50282 +384
==========================================
+ Hits 35408 35562 +154
- Misses 14490 14720 +230
🚀 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
|
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.