-
Notifications
You must be signed in to change notification settings - Fork 470
feat(crashtracking): support runtime stack collection for all Python versions #15568
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
This stack of pull requests is managed by Graphite. Learn more about stacking. |
2fb43d9 to
3c986f8
Compare
|
|
b99b787 to
ee403bd
Compare
Bootstrap import analysisComparison of import times between this PR and base. SummaryThe average import time from this PR is: 213 ± 3 ms. The average import time from base is: 213 ± 4 ms. The import time difference between this PR and base is: -0.6 ± 0.2 ms. Import time breakdownThe following import paths have shrunk:
|
82adb5a to
09dd5ac
Compare
Performance SLOsComparing candidate gyuheon0h/prof-13224-all-versions (ad737fc) with baseline main (ddecdc2) 📈 Performance Regressions (3 suites)📈 iastaspects - 118/118✅ add_aspectTime: ✅ 0.386µs (SLO: <10.000µs 📉 -96.1%) vs baseline: -0.3% Memory: ✅ 38.596MB (SLO: <41.500MB -7.0%) vs baseline: +5.3% ✅ add_inplace_aspectTime: ✅ 0.383µs (SLO: <10.000µs 📉 -96.2%) vs baseline: +0.4% Memory: ✅ 38.569MB (SLO: <41.500MB -7.1%) vs baseline: +4.6% ✅ add_inplace_noaspectTime: ✅ 0.285µs (SLO: <10.000µs 📉 -97.1%) vs baseline: -0.6% Memory: ✅ 38.543MB (SLO: <41.500MB -7.1%) vs baseline: +4.6% ✅ add_noaspectTime: ✅ 0.357µs (SLO: <10.000µs 📉 -96.4%) vs baseline: +0.7% Memory: ✅ 38.537MB (SLO: <41.500MB -7.1%) vs baseline: +5.3% ✅ bytearray_aspectTime: ✅ 1.313µs (SLO: <10.000µs 📉 -86.9%) vs baseline: +0.1% Memory: ✅ 38.424MB (SLO: <41.500MB -7.4%) vs baseline: +4.4% ✅ bytearray_extend_aspectTime: ✅ 1.502µs (SLO: <10.000µs 📉 -85.0%) vs baseline: -0.7% Memory: ✅ 38.483MB (SLO: <41.500MB -7.3%) vs baseline: +4.4% ✅ bytearray_extend_noaspectTime: ✅ 0.622µs (SLO: <10.000µs 📉 -93.8%) vs baseline: +0.6% Memory: ✅ 38.533MB (SLO: <41.500MB -7.1%) vs baseline: +5.2% ✅ bytearray_noaspectTime: ✅ 0.489µs (SLO: <10.000µs 📉 -95.1%) vs baseline: +0.7% Memory: ✅ 38.607MB (SLO: <41.500MB -7.0%) vs baseline: +5.2% ✅ bytes_aspectTime: ✅ 1.273µs (SLO: <10.000µs 📉 -87.3%) vs baseline: +1.0% Memory: ✅ 38.570MB (SLO: <41.500MB -7.1%) vs baseline: +4.7% ✅ bytes_noaspectTime: ✅ 0.499µs (SLO: <10.000µs 📉 -95.0%) vs baseline: ~same Memory: ✅ 38.548MB (SLO: <41.500MB -7.1%) vs baseline: +4.7% ✅ bytesio_aspectTime: ✅ 1.298µs (SLO: <10.000µs 📉 -87.0%) vs baseline: -0.4% Memory: ✅ 38.537MB (SLO: <41.500MB -7.1%) vs baseline: +5.1% ✅ bytesio_noaspectTime: ✅ 0.506µs (SLO: <10.000µs 📉 -94.9%) vs baseline: +0.1% Memory: ✅ 38.623MB (SLO: <41.500MB -6.9%) vs baseline: +5.0% ✅ capitalize_aspectTime: ✅ 0.746µs (SLO: <10.000µs 📉 -92.5%) vs baseline: +1.5% Memory: ✅ 38.608MB (SLO: <41.500MB -7.0%) vs baseline: +5.0% ✅ capitalize_noaspectTime: ✅ 0.437µs (SLO: <10.000µs 📉 -95.6%) vs baseline: -0.4% Memory: ✅ 38.417MB (SLO: <41.500MB -7.4%) vs baseline: +4.6% ✅ casefold_aspectTime: ✅ 0.737µs (SLO: <10.000µs 📉 -92.6%) vs baseline: ~same Memory: ✅ 38.681MB (SLO: <41.500MB -6.8%) vs baseline: +5.1% ✅ casefold_noaspectTime: ✅ 0.373µs (SLO: <10.000µs 📉 -96.3%) vs baseline: ~same Memory: ✅ 38.483MB (SLO: <41.500MB -7.3%) vs baseline: +4.7% ✅ decode_aspectTime: ✅ 0.731µs (SLO: <10.000µs 📉 -92.7%) vs baseline: ~same Memory: ✅ 38.542MB (SLO: <41.500MB -7.1%) vs baseline: +4.5% ✅ decode_noaspectTime: ✅ 0.421µs (SLO: <10.000µs 📉 -95.8%) vs baseline: +0.5% Memory: ✅ 38.495MB (SLO: <41.500MB -7.2%) vs baseline: +4.9% ✅ encode_aspectTime: ✅ 0.717µs (SLO: <10.000µs 📉 -92.8%) vs baseline: -0.3% Memory: ✅ 38.441MB (SLO: <41.500MB -7.4%) vs baseline: +4.5% ✅ encode_noaspectTime: ✅ 0.407µs (SLO: <10.000µs 📉 -95.9%) vs baseline: ~same Memory: ✅ 38.567MB (SLO: <41.500MB -7.1%) vs baseline: +5.0% ✅ format_aspectTime: ✅ 3.486µs (SLO: <10.000µs 📉 -65.1%) vs baseline: +1.1% Memory: ✅ 38.513MB (SLO: <41.500MB -7.2%) vs baseline: +4.9% ✅ format_map_aspectTime: ✅ 3.801µs (SLO: <10.000µs 📉 -62.0%) vs baseline: +7.0% Memory: ✅ 38.452MB (SLO: <41.500MB -7.3%) vs baseline: +4.5% ✅ format_map_noaspectTime: ✅ 0.816µs (SLO: <10.000µs 📉 -91.8%) vs baseline: +0.4% Memory: ✅ 38.638MB (SLO: <41.500MB -6.9%) vs baseline: +5.1% ✅ format_noaspectTime: ✅ 0.599µs (SLO: <10.000µs 📉 -94.0%) vs baseline: +0.9% Memory: ✅ 38.555MB (SLO: <41.500MB -7.1%) vs baseline: +4.8% ✅ index_aspectTime: ✅ 0.342µs (SLO: <10.000µs 📉 -96.6%) vs baseline: +0.3% Memory: ✅ 38.710MB (SLO: <41.500MB -6.7%) vs baseline: +5.0% ✅ index_noaspectTime: ✅ 0.315µs (SLO: <10.000µs 📉 -96.9%) vs baseline: -0.3% Memory: ✅ 38.566MB (SLO: <41.500MB -7.1%) vs baseline: +5.0% ✅ join_aspectTime: ✅ 1.304µs (SLO: <10.000µs 📉 -87.0%) vs baseline: -0.6% Memory: ✅ 38.534MB (SLO: <41.500MB -7.1%) vs baseline: +4.9% ✅ join_noaspectTime: ✅ 0.530µs (SLO: <10.000µs 📉 -94.7%) vs baseline: -0.9% Memory: ✅ 38.456MB (SLO: <41.500MB -7.3%) vs baseline: +4.7% ✅ ljust_aspectTime: ✅ 2.565µs (SLO: <20.000µs 📉 -87.2%) vs baseline: +1.7% Memory: ✅ 38.520MB (SLO: <41.500MB -7.2%) vs baseline: +4.4% ✅ ljust_noaspectTime: ✅ 0.406µs (SLO: <10.000µs 📉 -95.9%) vs baseline: +0.2% Memory: ✅ 38.628MB (SLO: <41.500MB -6.9%) vs baseline: +4.9% ✅ lower_aspectTime: ✅ 2.243µs (SLO: <10.000µs 📉 -77.6%) vs baseline: +0.8% Memory: ✅ 38.493MB (SLO: <41.500MB -7.2%) vs baseline: +4.9% ✅ lower_noaspectTime: ✅ 0.373µs (SLO: <10.000µs 📉 -96.3%) vs baseline: -0.5% Memory: ✅ 38.465MB (SLO: <41.500MB -7.3%) vs baseline: +4.8% ✅ lstrip_aspectTime: ✅ 2.205µs (SLO: <20.000µs 📉 -89.0%) vs baseline: +1.3% Memory: ✅ 38.552MB (SLO: <41.500MB -7.1%) vs baseline: +4.9% ✅ lstrip_noaspectTime: ✅ 0.385µs (SLO: <10.000µs 📉 -96.2%) vs baseline: ~same Memory: ✅ 38.481MB (SLO: <41.500MB -7.3%) vs baseline: +4.8% ✅ modulo_aspectTime: ✅ 0.972µs (SLO: <10.000µs 📉 -90.3%) vs baseline: -0.4% Memory: ✅ 38.671MB (SLO: <41.500MB -6.8%) vs baseline: +5.4% ✅ modulo_aspect_for_bytearray_bytearrayTime: ✅ 1.518µs (SLO: <10.000µs 📉 -84.8%) vs baseline: +1.7% Memory: ✅ 38.568MB (SLO: <41.500MB -7.1%) vs baseline: +4.7% ✅ modulo_aspect_for_bytesTime: ✅ 0.959µs (SLO: <10.000µs 📉 -90.4%) vs baseline: +1.2% Memory: ✅ 38.503MB (SLO: <41.500MB -7.2%) vs baseline: +5.1% ✅ modulo_aspect_for_bytes_bytearrayTime: ✅ 1.166µs (SLO: <10.000µs 📉 -88.3%) vs baseline: -1.1% Memory: ✅ 38.652MB (SLO: <41.500MB -6.9%) vs baseline: +4.9% ✅ modulo_noaspectTime: ✅ 0.672µs (SLO: <10.000µs 📉 -93.3%) vs baseline: +0.4% Memory: ✅ 38.557MB (SLO: <41.500MB -7.1%) vs baseline: +5.0% ✅ replace_aspectTime: ✅ 5.095µs (SLO: <10.000µs 📉 -49.0%) vs baseline: +2.8% Memory: ✅ 38.499MB (SLO: <41.500MB -7.2%) vs baseline: +4.8% ✅ replace_noaspectTime: ✅ 0.470µs (SLO: <10.000µs 📉 -95.3%) vs baseline: +2.2% Memory: ✅ 38.486MB (SLO: <41.500MB -7.3%) vs baseline: +4.6% ✅ repr_aspectTime: ✅ 0.949µs (SLO: <10.000µs 📉 -90.5%) vs baseline: -0.4% Memory: ✅ 38.727MB (SLO: <41.500MB -6.7%) vs baseline: +5.5% ✅ repr_noaspectTime: ✅ 0.460µs (SLO: <10.000µs 📉 -95.4%) vs baseline: +1.2% Memory: ✅ 38.536MB (SLO: <41.500MB -7.1%) vs baseline: +4.9% ✅ rstrip_aspectTime: ✅ 1.884µs (SLO: <20.000µs 📉 -90.6%) vs baseline: +1.4% Memory: ✅ 38.616MB (SLO: <41.500MB -6.9%) vs baseline: +5.4% ✅ rstrip_noaspectTime: ✅ 0.386µs (SLO: <10.000µs 📉 -96.1%) vs baseline: +1.8% Memory: ✅ 38.743MB (SLO: <41.500MB -6.6%) vs baseline: +5.0% ✅ slice_aspectTime: ✅ 0.487µs (SLO: <10.000µs 📉 -95.1%) vs baseline: -0.3% Memory: ✅ 38.647MB (SLO: <41.500MB -6.9%) vs baseline: +5.3% ✅ slice_noaspectTime: ✅ 0.455µs (SLO: <10.000µs 📉 -95.5%) vs baseline: +1.3% Memory: ✅ 38.454MB (SLO: <41.500MB -7.3%) vs baseline: +4.8% ✅ stringio_aspectTime: ✅ 1.691µs (SLO: <10.000µs 📉 -83.1%) vs baseline: +0.1% Memory: ✅ 38.517MB (SLO: <41.500MB -7.2%) vs baseline: +5.0% ✅ stringio_noaspectTime: ✅ 0.921µs (SLO: <10.000µs 📉 -90.8%) vs baseline: ~same Memory: ✅ 38.500MB (SLO: <41.500MB -7.2%) vs baseline: +4.4% ✅ strip_aspectTime: ✅ 2.470µs (SLO: <20.000µs 📉 -87.7%) vs baseline: 📈 +11.9% Memory: ✅ 38.523MB (SLO: <41.500MB -7.2%) vs baseline: +4.6% ✅ strip_noaspectTime: ✅ 0.390µs (SLO: <10.000µs 📉 -96.1%) vs baseline: +1.4% Memory: ✅ 38.513MB (SLO: <41.500MB -7.2%) vs baseline: +5.1% ✅ swapcase_aspectTime: ✅ 2.427µs (SLO: <10.000µs 📉 -75.7%) vs baseline: ~same Memory: ✅ 38.472MB (SLO: <41.500MB -7.3%) vs baseline: +4.3% ✅ swapcase_noaspectTime: ✅ 0.538µs (SLO: <10.000µs 📉 -94.6%) vs baseline: -0.9% Memory: ✅ 38.629MB (SLO: <41.500MB -6.9%) vs baseline: +5.4% ✅ title_aspectTime: ✅ 2.364µs (SLO: <10.000µs 📉 -76.4%) vs baseline: -0.6% Memory: ✅ 38.686MB (SLO: <41.500MB -6.8%) vs baseline: +4.9% ✅ title_noaspectTime: ✅ 0.510µs (SLO: <10.000µs 📉 -94.9%) vs baseline: +0.6% Memory: ✅ 38.526MB (SLO: <41.500MB -7.2%) vs baseline: +4.8% ✅ translate_aspectTime: ✅ 3.276µs (SLO: <10.000µs 📉 -67.2%) vs baseline: +1.1% Memory: ✅ 38.472MB (SLO: <41.500MB -7.3%) vs baseline: +4.7% ✅ translate_noaspectTime: ✅ 1.048µs (SLO: <10.000µs 📉 -89.5%) vs baseline: +0.6% Memory: ✅ 38.385MB (SLO: <41.500MB -7.5%) vs baseline: +4.7% ✅ upper_aspectTime: ✅ 2.219µs (SLO: <10.000µs 📉 -77.8%) vs baseline: -0.9% Memory: ✅ 38.382MB (SLO: <41.500MB -7.5%) vs baseline: +4.5% ✅ upper_noaspectTime: ✅ 0.375µs (SLO: <10.000µs 📉 -96.3%) vs baseline: +1.4% Memory: ✅ 38.637MB (SLO: <41.500MB -6.9%) vs baseline: +4.6% 📈 iastaspectsospath - 24/24✅ ospathbasename_aspectTime: ✅ 5.081µs (SLO: <10.000µs 📉 -49.2%) vs baseline: 📈 +20.8% Memory: ✅ 38.614MB (SLO: <41.000MB -5.8%) vs baseline: +5.1% ✅ ospathbasename_noaspectTime: ✅ 1.092µs (SLO: <10.000µs 📉 -89.1%) vs baseline: +0.7% Memory: ✅ 38.496MB (SLO: <41.000MB -6.1%) vs baseline: +5.6% ✅ ospathjoin_aspectTime: ✅ 6.104µs (SLO: <10.000µs 📉 -39.0%) vs baseline: +0.6% Memory: ✅ 38.555MB (SLO: <41.000MB -6.0%) vs baseline: +5.0% ✅ ospathjoin_noaspectTime: ✅ 2.289µs (SLO: <10.000µs 📉 -77.1%) vs baseline: ~same Memory: ✅ 38.653MB (SLO: <41.000MB -5.7%) vs baseline: +5.1% ✅ ospathnormcase_aspectTime: ✅ 3.432µs (SLO: <10.000µs 📉 -65.7%) vs baseline: ~same Memory: ✅ 38.555MB (SLO: <41.000MB -6.0%) vs baseline: +4.8% ✅ ospathnormcase_noaspectTime: ✅ 0.574µs (SLO: <10.000µs 📉 -94.3%) vs baseline: +1.3% Memory: ✅ 38.535MB (SLO: <41.000MB -6.0%) vs baseline: +5.3% ✅ ospathsplit_aspectTime: ✅ 4.821µs (SLO: <10.000µs 📉 -51.8%) vs baseline: -0.7% Memory: ✅ 38.574MB (SLO: <41.000MB -5.9%) vs baseline: +4.8% ✅ ospathsplit_noaspectTime: ✅ 1.588µs (SLO: <10.000µs 📉 -84.1%) vs baseline: ~same Memory: ✅ 38.574MB (SLO: <41.000MB -5.9%) vs baseline: +5.1% ✅ ospathsplitdrive_aspectTime: ✅ 3.658µs (SLO: <10.000µs 📉 -63.4%) vs baseline: -1.5% Memory: ✅ 38.555MB (SLO: <41.000MB -6.0%) vs baseline: +5.8% ✅ ospathsplitdrive_noaspectTime: ✅ 0.701µs (SLO: <10.000µs 📉 -93.0%) vs baseline: +1.6% Memory: ✅ 38.417MB (SLO: <41.000MB -6.3%) vs baseline: +5.2% ✅ ospathsplitext_aspectTime: ✅ 4.605µs (SLO: <10.000µs 📉 -53.9%) vs baseline: +0.9% Memory: ✅ 38.574MB (SLO: <41.000MB -5.9%) vs baseline: +4.6% ✅ ospathsplitext_noaspectTime: ✅ 1.388µs (SLO: <10.000µs 📉 -86.1%) vs baseline: +0.7% Memory: ✅ 38.476MB (SLO: <41.000MB -6.2%) vs baseline: +5.6% 📈 telemetryaddmetric - 30/30✅ 1-count-metric-1-timesTime: ✅ 3.402µs (SLO: <20.000µs 📉 -83.0%) vs baseline: 📈 +18.1% Memory: ✅ 34.859MB (SLO: <35.500MB 🟡 -1.8%) vs baseline: +5.0% ✅ 1-count-metrics-100-timesTime: ✅ 201.373µs (SLO: <220.000µs -8.5%) vs baseline: +0.7% Memory: ✅ 34.741MB (SLO: <35.500MB -2.1%) vs baseline: +5.2% ✅ 1-distribution-metric-1-timesTime: ✅ 3.238µs (SLO: <20.000µs 📉 -83.8%) vs baseline: +1.0% Memory: ✅ 34.721MB (SLO: <35.500MB -2.2%) vs baseline: +4.7% ✅ 1-distribution-metrics-100-timesTime: ✅ 216.986µs (SLO: <230.000µs -5.7%) vs baseline: +2.8% Memory: ✅ 35.036MB (SLO: <35.500MB 🟡 -1.3%) vs baseline: +4.9% ✅ 1-gauge-metric-1-timesTime: ✅ 2.148µs (SLO: <20.000µs 📉 -89.3%) vs baseline: -0.8% Memory: ✅ 34.819MB (SLO: <35.500MB 🟡 -1.9%) vs baseline: +5.0% ✅ 1-gauge-metrics-100-timesTime: ✅ 137.336µs (SLO: <150.000µs -8.4%) vs baseline: +0.4% Memory: ✅ 34.800MB (SLO: <35.500MB 🟡 -2.0%) vs baseline: +4.9% ✅ 1-rate-metric-1-timesTime: ✅ 3.043µs (SLO: <20.000µs 📉 -84.8%) vs baseline: +1.6% Memory: ✅ 34.957MB (SLO: <35.500MB 🟡 -1.5%) vs baseline: +5.3% ✅ 1-rate-metrics-100-timesTime: ✅ 216.994µs (SLO: <250.000µs 📉 -13.2%) vs baseline: +2.6% Memory: ✅ 34.819MB (SLO: <35.500MB 🟡 -1.9%) vs baseline: +4.7% ✅ 100-count-metrics-100-timesTime: ✅ 20.087ms (SLO: <22.000ms -8.7%) vs baseline: +0.6% Memory: ✅ 34.819MB (SLO: <35.500MB 🟡 -1.9%) vs baseline: +5.2% ✅ 100-distribution-metrics-100-timesTime: ✅ 2.217ms (SLO: <2.550ms 📉 -13.1%) vs baseline: -2.2% Memory: ✅ 34.760MB (SLO: <35.500MB -2.1%) vs baseline: +4.0% ✅ 100-gauge-metrics-100-timesTime: ✅ 1.410ms (SLO: <1.550ms -9.1%) vs baseline: +1.3% Memory: ✅ 34.800MB (SLO: <35.500MB 🟡 -2.0%) vs baseline: +5.2% ✅ 100-rate-metrics-100-timesTime: ✅ 2.198ms (SLO: <2.550ms 📉 -13.8%) vs baseline: +1.1% Memory: ✅ 34.701MB (SLO: <35.500MB -2.2%) vs baseline: +5.1% ✅ flush-1-metricTime: ✅ 4.506µs (SLO: <20.000µs 📉 -77.5%) vs baseline: -1.0% Memory: ✅ 35.036MB (SLO: <35.500MB 🟡 -1.3%) vs baseline: +4.8% ✅ flush-100-metricsTime: ✅ 174.027µs (SLO: <250.000µs 📉 -30.4%) vs baseline: -0.2% Memory: ✅ 35.095MB (SLO: <35.500MB 🟡 -1.1%) vs baseline: +4.8% ✅ flush-1000-metricsTime: ✅ 2.162ms (SLO: <2.500ms 📉 -13.5%) vs baseline: +0.2% Memory: ✅ 35.861MB (SLO: <36.500MB 🟡 -1.7%) vs baseline: +4.7% 🟡 Near SLO Breach (15 suites)🟡 coreapiscenario - 10/10 (1 unstable)
|
| } | ||
|
|
||
| /************************************************************ | ||
| Emit runtime stacktrace as string using _Py_DumpTracebackThreads |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This whole section with runtime stacktrace existed previously in crashtracker.rs
| } | ||
|
|
||
| /************************************************************ | ||
| Emit runtime stacktrace as frames using by traversing the frame object chain |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Starting here is new stuff
3ec18a3 to
ad737fc
Compare

Description
This PR allows for runtime stacks collection for all CPython versions greater than 3.9.*
We are okay with using dangerous Python APIs in a crash context. This is because the Crashtracker has safety nets that ensure customer experience will not be impacted; at worst, only the
runtime_stackssection, which is experimental, will be missing from a crash report.We don't support 3.9 because this will require special linking logic to CPython symbol as
PyThreadState_GetFrameis not in the public API until 3.10 anddd-trace-pywill drop support for 3.9 soon anyways.Testing
Uploaded some crashes to telemetry logs. Runtime stacks unit test has also been updated to check for
string_atin the experimental section of the crash report for all versions > 3.9Risks
Additional Notes