-
-
Notifications
You must be signed in to change notification settings - Fork 64
chore: event buffering in pipe mode #319
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
When in pipe mode we do event buffering. This is the equivalent of line buffering but for the two main Austin events, that is samples and metadata. With this change, any tool communicating with Austin via a pipe will get the bytes for each event immediately instead of at the default stream buffer size. This allows tools to get events from Austin in real-time as they are collected instead of periodic bursts.
Austin Data ValidationPython 3.9✨ All scenarios validated successfully! ✨ Python 3.10✨ All scenarios validated successfully! ✨ Python 3.11✨ All scenarios validated successfully! ✨ Python 3.12✨ All scenarios validated successfully! ✨ Python 3.13✨ All scenarios validated successfully! ✨ |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## devel #319 +/- ##
========================================
Coverage ? 67.59%
========================================
Files ? 32
Lines ? 2756
Branches ? 792
========================================
Hits ? 1863
Misses ? 507
Partials ? 386 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Austin BenchmarksRunning Austin benchmarks with Python 3.13.7 Benchmark SummaryComparison of dev against base. The following scenarios show a statistically significant difference in performance between the two versions.
Benchmark ResultsWall time [sampling interval: 1]Wall time [sampling interval: 1]
Wall time [sampling interval: 10]Wall time [sampling interval: 10]
Wall time [sampling interval: 100]Wall time [sampling interval: 100]
Wall time [sampling interval: 1000]Wall time [sampling interval: 1000]
CPU time [sampling interval: 1]CPU time [sampling interval: 1]
CPU time [sampling interval: 10]CPU time [sampling interval: 10]
CPU time [sampling interval: 100]CPU time [sampling interval: 100]
CPU time [sampling interval: 1000]CPU time [sampling interval: 1000]
RSA keygen [sampling interval: 1]RSA keygen [sampling interval: 1]
RSA keygen [sampling interval: 10]RSA keygen [sampling interval: 10]
RSA keygen [sampling interval: 100]RSA keygen [sampling interval: 100]
RSA keygen [sampling interval: 1000]RSA keygen [sampling interval: 1000]
Full metrics [sampling interval: 1]Full metrics [sampling interval: 1]
Full metrics [sampling interval: 10]Full metrics [sampling interval: 10]
Full metrics [sampling interval: 100]Full metrics [sampling interval: 100]
Full metrics [sampling interval: 1000]Full metrics [sampling interval: 1000]
Multiprocess wall time [sampling interval: 1]Multiprocess wall time [sampling interval: 1]
Multiprocess wall time [sampling interval: 10]Multiprocess wall time [sampling interval: 10]
Multiprocess wall time [sampling interval: 100]Multiprocess wall time [sampling interval: 100]
Multiprocess wall time [sampling interval: 1000]Multiprocess wall time [sampling interval: 1000]
|
When in pipe mode we do event buffering. This is the equivalent of line buffering but for the two main Austin events, that is samples and metadata. With this change, any tool communicating with Austin via a pipe will get the bytes for each event immediately instead of at the default stream buffer size. This allows tools to get events from Austin in real-time as they are collected instead of periodic bursts.
Note
This change has a performance impact on pipe mode.