-
Notifications
You must be signed in to change notification settings - Fork 106
H-5331: Support CPU and Wall time profiling in benchmarks #7789
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?
H-5331: Support CPU and Wall time profiling in benchmarks #7789
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7789 +/- ##
==========================================
- Coverage 54.71% 54.70% -0.01%
==========================================
Files 1085 1085
Lines 96195 96207 +12
Branches 4547 4553 +6
==========================================
Hits 52632 52632
- Misses 42976 42988 +12
Partials 587 587
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Benchmarks don't finish, there is something going on which is not reproducible locally. Converting to draft. |
🌟 What is the purpose of this PR?
This implements CPU time profiling (using pprof) and Wall time profiling (using tracing spans). It can be hooked into the profiling by enabling them in the telemetry config.
🔍 What does this change?
tracing-flame
for three reasons:tracing-opentelemetry
, which means that the resulting flame graph will be similar to the tracestracing-flame
only supports aio::Write
interface but we want to collect them asynchronous in a dedicated thread using channels. While we could usewrite
andflush
to send messages, utilizing channels is easier, in particular because it allows us to use dedicated errorstracing-flame
creates a folded row for each enter/exit of a span resulting in a huge amount of data. It is enough to only generate a single row for flame graphs (we would need that for flame charts, but for that functionality, we have proper tracing)pprof
implementationBoth implementation can be separately disabled.
Pre-Merge Checklist 🚀
🚢 Has this modified a publishable library?
This PR:
📜 Does this require a change to the docs?
The changes in this PR:
🕸️ Does this require a change to the Turbo Graph?
The changes in this PR:
This is currently disabled in production because:
std::thread
approach overtokio::task
)