Skip to content

Conversation

@P403n1x87
Copy link
Owner

@P403n1x87 P403n1x87 commented Aug 21, 2025

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.

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.
@github-actions
Copy link

github-actions bot commented Aug 21, 2025

Austin Data Validation

Python 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
Copy link

codecov bot commented Aug 21, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (devel@996d0f1). Learn more about missing BASE report.
⚠️ Report is 3 commits behind head on devel.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions
Copy link

github-actions bot commented Aug 21, 2025

Austin Benchmarks

Running Austin benchmarks with Python 3.13.7

Benchmark Summary

Comparison of dev against base.

The following scenarios show a statistically significant difference in performance between the two versions.

Sample Rate Saturation Error Rate Sampling Speed
Wall time [sampling interval: 10] 🟡 🟡 🟢 🟡
RSA keygen [sampling interval: 1000] 🔴 🟡 🟡 🟡
Full metrics [sampling interval: 1] 🟡 🟡 🟡 🔴

Benchmark Results

Wall time [sampling interval: 1]

Wall time [sampling interval: 1]

Sample Rate Saturation Error Rate Sampling Speed
base 122000 ± 5000 1 ± 0 0.0002 ± 0.0001 11.7 ± 0.5
dev 125000 ± 5000 1 ± 0 0.00026 ± 0.0001 11.3 ± 0.5
Wall time [sampling interval: 10]

Wall time [sampling interval: 10]

Sample Rate Saturation Error Rate Sampling Speed
base 110000 ± 10000 0.57 ± 0.04 0.00031 ± 3e-05 11.6 ± 0.5
dev 122000 ± 4000 0.57 ± 0.02 0.00027 ± 3e-05 11.7 ± 0.5
Wall time [sampling interval: 100]

Wall time [sampling interval: 100]

Sample Rate Saturation Error Rate Sampling Speed
base 12000 ± 300 0.0009 ± 0.0002 0.0004 ± 0.0002 13.6 ± 0.7
dev 12200 ± 200 0.0009 ± 0.0002 0.0005 ± 0.0002 13.6 ± 0.8
Wall time [sampling interval: 1000]

Wall time [sampling interval: 1000]

Sample Rate Saturation Error Rate Sampling Speed
base 1860 ± 30 0 ± 0 0.0007 ± 0.0005 16 ± 3
dev 1840 ± 40 0 ± 0 0.0006 ± 0.0003 14.6 ± 0.7
CPU time [sampling interval: 1]

CPU time [sampling interval: 1]

Sample Rate Saturation Error Rate Sampling Speed
base 31000 ± 2000 1 ± 0 0.001 ± 0.0004 24 ± 1
dev 32000 ± 2000 1 ± 0 0.001 ± 0.0001 24 ± 1
CPU time [sampling interval: 10]

CPU time [sampling interval: 10]

Sample Rate Saturation Error Rate Sampling Speed
base 33000 ± 2000 1 ± 0 0.0009 ± 0.0003 23.4 ± 1.0
dev 33000 ± 1000 1 ± 0 0.001 ± 0.0004 23.4 ± 0.8
CPU time [sampling interval: 100]

CPU time [sampling interval: 100]

Sample Rate Saturation Error Rate Sampling Speed
base 6180 ± 10 0.0012 ± 0.0003 0.0014 ± 0.0003 28.3 ± 0.9
dev 6180 ± 20 0.0012 ± 0.0001 0.0011 ± 0.0006 28 ± 1
CPU time [sampling interval: 1000]

CPU time [sampling interval: 1000]

Sample Rate Saturation Error Rate Sampling Speed
base 943 ± 1 0 ± 0 0.0014 ± 0.0008 32 ± 2
dev 943 ± 1 0 ± 0 0.0007 ± 0.0008 31 ± 3
RSA keygen [sampling interval: 1]

RSA keygen [sampling interval: 1]

Sample Rate Saturation Error Rate Sampling Speed
base 52000 ± 2000 1 ± 0 0.006 ± 0.005 18.2 ± 0.8
dev 51000 ± 2000 1 ± 0 0.005 ± 0.005 18.5 ± 0.7
RSA keygen [sampling interval: 10]

RSA keygen [sampling interval: 10]

Sample Rate Saturation Error Rate Sampling Speed
base 52000 ± 2000 1 ± 0 0.004 ± 0.004 18.2 ± 0.8
dev 51000 ± 1000 1 ± 0 0.004 ± 0.002 18.5 ± 0.7
RSA keygen [sampling interval: 100]

RSA keygen [sampling interval: 100]

Sample Rate Saturation Error Rate Sampling Speed
base 6170 ± 20 0.0008 ± 0.0008 0.014 ± 0.009 23 ± 1
dev 6180 ± 30 0.001 ± 0.001 0.01 ± 0.01 23 ± 2
RSA keygen [sampling interval: 1000]

RSA keygen [sampling interval: 1000]

Sample Rate Saturation Error Rate Sampling Speed
base 940.9 ± 0.6 0 ± 0 0.01 ± 0.005 24 ± 1
dev 939 ± 2 0 ± 0 0.02 ± 0.02 27 ± 3
Full metrics [sampling interval: 1]

Full metrics [sampling interval: 1]

Sample Rate Saturation Error Rate Sampling Speed
base 44000 ± 2000 1 ± 0 0.0007 ± 0.0002 33 ± 1
dev 42800 ± 700 1 ± 0 0.0006 ± 0.0002 34.6 ± 0.8
Full metrics [sampling interval: 10]

Full metrics [sampling interval: 10]

Sample Rate Saturation Error Rate Sampling Speed
base 46000 ± 2000 1 ± 0 0.0006 ± 0.0002 32 ± 1
dev 45000 ± 2000 1 ± 0 0.00067 ± 6e-05 33 ± 1
Full metrics [sampling interval: 100]

Full metrics [sampling interval: 100]

Sample Rate Saturation Error Rate Sampling Speed
base 12100 ± 200 0.0017 ± 0.0004 0.0007 ± 0.0004 39 ± 1
dev 12200 ± 200 0.002 ± 0.0004 0.0009 ± 0.0004 39 ± 2
Full metrics [sampling interval: 1000]

Full metrics [sampling interval: 1000]

Sample Rate Saturation Error Rate Sampling Speed
base 1840 ± 40 0 ± 0 0.0008 ± 0.0007 42 ± 2
dev 1850 ± 30 0 ± 0 0.0009 ± 0.0004 43 ± 2
Multiprocess wall time [sampling interval: 1]

Multiprocess wall time [sampling interval: 1]

Sample Rate Saturation Error Rate Sampling Speed
base 6000 ± 200 1 ± 0 0.0016 ± 0.0006 118 ± 5
dev 6000 ± 200 1 ± 0 0.0018 ± 0.0001 116 ± 5
Multiprocess wall time [sampling interval: 10]

Multiprocess wall time [sampling interval: 10]

Sample Rate Saturation Error Rate Sampling Speed
base 6000 ± 100 1 ± 0 0.0017 ± 0.0001 117 ± 6
dev 6100 ± 200 1 ± 0 0.0016 ± 0.0006 112 ± 8
Multiprocess wall time [sampling interval: 100]

Multiprocess wall time [sampling interval: 100]

Sample Rate Saturation Error Rate Sampling Speed
base 6100 ± 200 0.0121 ± 0.0008 0.0006 ± 0.0002 112 ± 6
dev 6070 ± 100 0.0118 ± 0.0005 0.0006 ± 0.0003 116 ± 9
Multiprocess wall time [sampling interval: 1000]

Multiprocess wall time [sampling interval: 1000]

Sample Rate Saturation Error Rate Sampling Speed
base 4150 ± 60 0.0016 ± 0.0001 0.00018 ± 8e-05 49 ± 1
dev 4170 ± 70 0.0017 ± 0.0001 0.00015 ± 7e-05 49.6 ± 1.0

@P403n1x87 P403n1x87 marked this pull request as ready for review August 22, 2025 10:17
@P403n1x87 P403n1x87 merged commit df7262e into devel Aug 22, 2025
42 of 44 checks passed
@P403n1x87 P403n1x87 deleted the chore/pipe-event-buffering branch August 22, 2025 10:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants