-
Notifications
You must be signed in to change notification settings - Fork 457
fix(profiling): upgrade echion to fix segfaults from services with many asyncio.Task
s
#14630
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
|
asyncio
heavy services
asyncio
heavy servicesasyncio.Task
s
Bootstrap import analysisComparison of import times between this PR and base. SummaryThe average import time from this PR is: 268 ± 4 ms. The average import time from base is: 269 ± 3 ms. The import time difference between this PR and base is: -1.1 ± 0.2 ms. Import time breakdownThe following import paths have shrunk:
|
Performance SLOsComparing candidate taegyunkim/prof-12155-llong-fix-echion (481ddcf) with baseline main (e2bc7d1) 📈 Performance Regressions (1 suite)📈 telemetryaddmetric - 30/30✅ 1-count-metric-1-timesTime: ✅ 3.455µs (SLO: <20.000µs 📉 -82.7%) vs baseline: +7.2% Memory: ✅ 31.457MB (SLO: <34.000MB -7.5%) vs baseline: +4.9% ✅ 1-count-metrics-100-timesTime: ✅ 213.337µs (SLO: <250.000µs 📉 -14.7%) vs baseline: -0.5% Memory: ✅ 31.497MB (SLO: <34.000MB -7.4%) vs baseline: +4.9% ✅ 1-distribution-metric-1-timesTime: ✅ 3.375µs (SLO: <20.000µs 📉 -83.1%) vs baseline: 📈 +12.1% Memory: ✅ 31.418MB (SLO: <34.000MB -7.6%) vs baseline: +4.5% ✅ 1-distribution-metrics-100-timesTime: ✅ 197.339µs (SLO: <220.000µs 📉 -10.3%) vs baseline: +0.5% Memory: ✅ 31.457MB (SLO: <34.000MB -7.5%) vs baseline: +4.8% ✅ 1-gauge-metric-1-timesTime: ✅ 2.142µs (SLO: <20.000µs 📉 -89.3%) vs baseline: +1.8% Memory: ✅ 31.398MB (SLO: <34.000MB -7.7%) vs baseline: +4.9% ✅ 1-gauge-metrics-100-timesTime: ✅ 126.070µs (SLO: <150.000µs 📉 -16.0%) vs baseline: +1.0% Memory: ✅ 31.438MB (SLO: <34.000MB -7.5%) vs baseline: +4.8% ✅ 1-rate-metric-1-timesTime: ✅ 3.218µs (SLO: <20.000µs 📉 -83.9%) vs baseline: +1.1% Memory: ✅ 31.457MB (SLO: <34.000MB -7.5%) vs baseline: +5.0% ✅ 1-rate-metrics-100-timesTime: ✅ 217.828µs (SLO: <250.000µs 📉 -12.9%) vs baseline: +0.9% Memory: ✅ 31.418MB (SLO: <34.000MB -7.6%) vs baseline: +4.7% ✅ 100-count-metrics-100-timesTime: ✅ 22.076ms (SLO: <23.500ms -6.1%) vs baseline: +1.9% Memory: ✅ 31.516MB (SLO: <34.000MB -7.3%) vs baseline: +5.0% ✅ 100-distribution-metrics-100-timesTime: ✅ 2.100ms (SLO: <2.250ms -6.7%) vs baseline: +2.3% Memory: ✅ 31.477MB (SLO: <34.000MB -7.4%) vs baseline: +4.8% ✅ 100-gauge-metrics-100-timesTime: ✅ 1.283ms (SLO: <1.550ms 📉 -17.2%) vs baseline: ~same Memory: ✅ 31.477MB (SLO: <34.000MB -7.4%) vs baseline: +5.0% ✅ 100-rate-metrics-100-timesTime: ✅ 2.200ms (SLO: <2.550ms 📉 -13.7%) vs baseline: -0.7% Memory: ✅ 31.477MB (SLO: <34.000MB -7.4%) vs baseline: +4.8% ✅ flush-1-metricTime: ✅ 4.403µs (SLO: <20.000µs 📉 -78.0%) vs baseline: -0.8% Memory: ✅ 31.909MB (SLO: <34.000MB -6.1%) vs baseline: +5.1% ✅ flush-100-metricsTime: ✅ 182.582µs (SLO: <250.000µs 📉 -27.0%) vs baseline: +0.1% Memory: ✅ 31.850MB (SLO: <34.000MB -6.3%) vs baseline: +5.0% ✅ flush-1000-metricsTime: ✅ 2.246ms (SLO: <2.500ms 📉 -10.2%) vs baseline: +1.4% Memory: ✅ 32.617MB (SLO: <34.500MB -5.5%) vs baseline: +4.9% 🟡 Near SLO Breach (6 suites)🟡 djangosimple - 28/28✅ appsecTime: ✅ 20.524ms (SLO: <22.300ms -8.0%) vs baseline: ~same Memory: ✅ 64.468MB (SLO: <66.000MB -2.3%) vs baseline: +4.9% ✅ exception-replay-enabledTime: ✅ 1.344ms (SLO: <1.450ms -7.3%) vs baseline: +0.1% Memory: ✅ 63.540MB (SLO: <66.000MB -3.7%) vs baseline: +4.8% ✅ iastTime: ✅ 20.575ms (SLO: <22.250ms -7.5%) vs baseline: +0.5% Memory: ✅ 64.487MB (SLO: <66.000MB -2.3%) vs baseline: +4.9% ✅ profilerTime: ✅ 15.249ms (SLO: <16.550ms -7.9%) vs baseline: +0.2% Memory: ✅ 52.927MB (SLO: <53.500MB 🟡 -1.1%) vs baseline: +4.7% ✅ span-code-originTime: ✅ 26.119ms (SLO: <28.200ms -7.4%) vs baseline: -0.4% Memory: ✅ 66.769MB (SLO: <68.500MB -2.5%) vs baseline: +4.6% ✅ tracerTime: ✅ 20.460ms (SLO: <21.750ms -5.9%) vs baseline: -0.5% Memory: ✅ 64.409MB (SLO: <66.000MB -2.4%) vs baseline: +4.6% ✅ tracer-and-profilerTime: ✅ 22.054ms (SLO: <23.500ms -6.2%) vs baseline: ~same Memory: ✅ 65.769MB (SLO: <67.000MB 🟡 -1.8%) vs baseline: +4.7% ✅ tracer-dont-create-db-spansTime: ✅ 19.327ms (SLO: <21.500ms 📉 -10.1%) vs baseline: -0.1% Memory: ✅ 64.468MB (SLO: <66.000MB -2.3%) vs baseline: +4.8% ✅ tracer-minimalTime: ✅ 16.634ms (SLO: <17.500ms -4.9%) vs baseline: +0.2% Memory: ✅ 64.487MB (SLO: <66.000MB -2.3%) vs baseline: +5.0% ✅ tracer-nativeTime: ✅ 20.456ms (SLO: <21.750ms -5.9%) vs baseline: -0.3% Memory: ✅ 65.805MB (SLO: <66.000MB 🟡 -0.3%) vs baseline: +4.9% ✅ tracer-no-cachesTime: ✅ 18.475ms (SLO: <19.650ms -6.0%) vs baseline: ~same Memory: ✅ 64.487MB (SLO: <66.000MB -2.3%) vs baseline: +4.8% ✅ tracer-no-databasesTime: ✅ 18.803ms (SLO: <20.100ms -6.5%) vs baseline: -0.2% Memory: ✅ 64.546MB (SLO: <66.000MB -2.2%) vs baseline: +5.0% ✅ tracer-no-middlewareTime: ✅ 20.171ms (SLO: <21.500ms -6.2%) vs baseline: +0.2% Memory: ✅ 64.558MB (SLO: <66.000MB -2.2%) vs baseline: +5.0% ✅ tracer-no-templatesTime: ✅ 20.318ms (SLO: <22.000ms -7.6%) vs baseline: +0.4% Memory: ✅ 64.507MB (SLO: <66.000MB -2.3%) vs baseline: +4.9% 🟡 errortrackingdjangosimple - 6/6✅ errortracking-enabled-allTime: ✅ 18.053ms (SLO: <19.850ms -9.1%) vs baseline: -0.2% Memory: ✅ 64.483MB (SLO: <65.500MB 🟡 -1.6%) vs baseline: +4.9% ✅ errortracking-enabled-userTime: ✅ 18.091ms (SLO: <19.400ms -6.7%) vs baseline: +0.3% Memory: ✅ 64.445MB (SLO: <65.500MB 🟡 -1.6%) vs baseline: +4.7% ✅ tracer-enabledTime: ✅ 18.215ms (SLO: <19.450ms -6.3%) vs baseline: +0.9% Memory: ✅ 64.477MB (SLO: <65.500MB 🟡 -1.6%) vs baseline: +4.7% 🟡 flasksimple - 17/17✅ appsec-getTime: ✅ 4.580ms (SLO: <4.750ms -3.6%) vs baseline: -0.4% Memory: ✅ 62.344MB (SLO: <64.500MB -3.3%) vs baseline: +4.8% ✅ appsec-postTime: ✅ 6.578ms (SLO: <6.750ms -2.6%) vs baseline: -0.3% Memory: ✅ 62.344MB (SLO: <64.500MB -3.3%) vs baseline: +4.8% ✅ appsec-telemetryTime: ✅ 4.581ms (SLO: <4.750ms -3.6%) vs baseline: -0.3% Memory: ✅ 62.305MB (SLO: <64.500MB -3.4%) vs baseline: +4.7% ✅ debuggerTime: ✅ 1.858ms (SLO: <2.000ms -7.1%) vs baseline: -0.1% Memory: ✅ 44.768MB (SLO: <45.000MB 🟡 -0.5%) vs baseline: +4.9% ✅ iast-getTime: ✅ 1.856ms (SLO: <2.000ms -7.2%) vs baseline: ~same Memory: ✅ 41.740MB (SLO: <49.000MB 📉 -14.8%) vs baseline: +4.9% ✅ profilerTime: ✅ 1.919ms (SLO: <2.100ms -8.6%) vs baseline: +0.1% Memory: ✅ 44.492MB (SLO: <46.500MB -4.3%) vs baseline: +4.9% ✅ tracerTime: ✅ 3.376ms (SLO: <3.650ms -7.5%) vs baseline: +0.2% Memory: ✅ 51.511MB (SLO: <53.500MB -3.7%) vs baseline: +4.9% ✅ tracer-nativeTime: ✅ 3.376ms (SLO: <3.650ms -7.5%) vs baseline: ~same Memory: ✅ 52.632MB (SLO: <53.500MB 🟡 -1.6%) vs baseline: +4.7% 🟡 flasksqli - 6/6✅ appsec-enabledTime: ✅ 3.939ms (SLO: <4.200ms -6.2%) vs baseline: ~same Memory: ✅ 62.514MB (SLO: <66.000MB -5.3%) vs baseline: +4.6% ✅ iast-enabledTime: ✅ 2.446ms (SLO: <2.800ms 📉 -12.6%) vs baseline: -0.5% Memory: ✅ 58.208MB (SLO: <59.000MB 🟡 -1.3%) vs baseline: +4.9% ✅ tracer-enabledTime: ✅ 2.080ms (SLO: <2.250ms -7.6%) vs baseline: +0.2% Memory: ✅ 51.150MB (SLO: <53.500MB -4.4%) vs baseline: +4.8% 🟡 iastpropagation - 8/8✅ no-propagationTime: ✅ 48.575µs (SLO: <60.000µs 📉 -19.0%) vs baseline: -0.5% Memory: ✅ 37.139MB (SLO: <39.000MB -4.8%) vs baseline: +5.2% ✅ propagation_enabledTime: ✅ 175.984µs (SLO: <190.000µs -7.4%) vs baseline: ~same Memory: ✅ 37.041MB (SLO: <39.000MB -5.0%) vs baseline: +4.9% ✅ propagation_enabled_100Time: ✅ 2.039ms (SLO: <2.300ms 📉 -11.3%) vs baseline: +4.6% Memory: ✅ 37.080MB (SLO: <39.000MB -4.9%) vs baseline: +4.9% ✅ propagation_enabled_1000Time: ✅ 34.357ms (SLO: <34.550ms 🟡 -0.6%) vs baseline: +5.1% Memory: ✅ 37.021MB (SLO: <39.000MB -5.1%) vs baseline: +4.7% 🟡 otelspan - 22/22✅ add-eventTime: ✅ 45.236ms (SLO: <47.150ms -4.1%) vs baseline: -0.2% Memory: ✅ 44.635MB (SLO: <46.500MB -4.0%) vs baseline: +4.8% ✅ add-metricsTime: ✅ 323.174ms (SLO: <344.800ms -6.3%) vs baseline: +0.9% Memory: ✅ 553.353MB (SLO: <562.000MB 🟡 -1.5%) vs baseline: +4.9% ✅ add-tagsTime: ✅ 291.915ms (SLO: <314.000ms -7.0%) vs baseline: +0.8% Memory: ✅ 555.827MB (SLO: <563.500MB 🟡 -1.4%) vs baseline: +5.3% ✅ get-contextTime: ✅ 82.682ms (SLO: <92.350ms 📉 -10.5%) vs baseline: -0.2% Memory: ✅ 39.879MB (SLO: <46.500MB 📉 -14.2%) vs baseline: +4.9% ✅ is-recordingTime: ✅ 43.099ms (SLO: <44.500ms -3.1%) vs baseline: +0.9% Memory: ✅ 44.109MB (SLO: <46.500MB -5.1%) vs baseline: +4.9% ✅ record-exceptionTime: ✅ 61.760ms (SLO: <67.650ms -8.7%) vs baseline: +0.4% Memory: ✅ 40.080MB (SLO: <46.500MB 📉 -13.8%) vs baseline: +4.8% ✅ set-statusTime: ✅ 48.849ms (SLO: <50.400ms -3.1%) vs baseline: +0.5% Memory: ✅ 44.086MB (SLO: <46.500MB -5.2%) vs baseline: +4.9% ✅ startTime: ✅ 42.289ms (SLO: <43.450ms -2.7%) vs baseline: +0.7% Memory: ✅ 44.065MB (SLO: <46.500MB -5.2%) vs baseline: +4.7% ✅ start-finishTime: ✅ 83.132ms (SLO: <88.000ms -5.5%) vs baseline: +0.1% Memory: ✅ 33.994MB (SLO: <46.500MB 📉 -26.9%) vs baseline: +4.9% ✅ start-finish-telemetryTime: ✅ 84.802ms (SLO: <89.000ms -4.7%) vs baseline: +0.2% Memory: ✅ 34.013MB (SLO: <46.500MB 📉 -26.9%) vs baseline: +4.7% ✅ update-nameTime: ✅ 44.205ms (SLO: <45.150ms -2.1%) vs baseline: ~same Memory: ✅ 44.351MB (SLO: <46.500MB -4.6%) vs baseline: +4.7%
|
Comparison: P403n1x87/echion@158a50f...576ff53
This upgrade includes two PRs from Echion
Note the perf change only applies to echion standalone mode, and
dd-trace-py
has already been usingstd::this_thread::sleep_until
since stack_v2 was introduceddd-trace-py/ddtrace/internal/datadog/profiling/stack_v2/src/sampler.cpp
Line 177 in d90eb4f
Checklist
Reviewer Checklist