-
Notifications
You must be signed in to change notification settings - Fork 461
feat(internal): native spans - WIP #14851
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
|
0cb3e79
to
8e4a30a
Compare
Bootstrap import analysisComparison of import times between this PR and base. SummaryThe average import time from this PR is: 241 ± 3 ms. The average import time from base is: 243 ± 3 ms. The import time difference between this PR and base is: -2.5 ± 0.1 ms. Import time breakdownThe following import paths have grown:
|
f"parent_id={self.parent_id}, " | ||
f"trace_id={self.trace_id}, " | ||
f"service='{self.service}', " | ||
f"Span(name='{self.data.name}', " |
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.
f"Span(name='{self.data.name}', " | |
data = self.data | |
f"Span(name='{data.name}', " |
return self._store.get(key) | ||
|
||
@property | ||
def service(self): |
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.
I hope to be wrong, but I would expect these properties to have a fair bit of overhead 😟
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.
I had another idea to make ddtrace.Span inherit from the native spans, so I don't need these methods and getting service would call to native code (I think?)
Also eventually I want to completely move all methods/setter/getters to native code so these should disappear
Performance SLOsComparing candidate paullgdc/native/span (0f99330) with baseline main (b6d846e) ❌ Test Failures (4 suites)❌ djangosimple - 5/28❌ appsecTime: ❌ 23.777ms (SLO: <22.300ms +6.6%) vs baseline: 📈 +15.9% Memory: ❌ 69.240MB (SLO: <67.000MB +3.3%) vs baseline: 📈 +10.9% ✅ exception-replay-enabledTime: ✅ 1.438ms (SLO: <1.450ms 🟡 -0.8%) vs baseline: +6.9% Memory: ✅ 63.935MB (SLO: <67.000MB -4.6%) vs baseline: +3.8% ❌ iastTime: ❌ 23.809ms (SLO: <22.250ms +7.0%) vs baseline: 📈 +16.3% Memory: ❌ 69.201MB (SLO: <67.000MB +3.3%) vs baseline: 📈 +10.8% ✅ profilerTime: ✅ 15.303ms (SLO: <16.550ms -7.5%) vs baseline: ~same Memory: ✅ 53.703MB (SLO: <54.500MB 🟡 -1.5%) vs baseline: +4.8% ❌ resource-renamingTime: ❌ 21.843ms (SLO: <21.750ms +0.4%) vs baseline: +6.3% Memory: ❌ 80.757MB (SLO: <67.000MB 📈 +20.5%) vs baseline: 📈 +29.3% ❌ tracerTime: ❌ 23.793ms (SLO: <21.750ms +9.4%) vs baseline: 📈 +16.1% Memory: ❌ 69.217MB (SLO: <67.000MB +3.3%) vs baseline: 📈 +10.9% ❌ tracer-and-profilerTime: ✅ 23.184ms (SLO: <23.500ms 🟡 -1.3%) vs baseline: +5.1% Memory: ❌ 84.374MB (SLO: <67.500MB 📈 +25.0%) vs baseline: 📈 +32.8% ❌ tracer-dont-create-db-spansTime: ❌ 21.806ms (SLO: <21.500ms +1.4%) vs baseline: 📈 +12.7% Memory: ❌ 69.270MB (SLO: <66.000MB +5.0%) vs baseline: 📈 +10.9% ❌ tracer-minimalTime: ❌ 18.082ms (SLO: <17.500ms +3.3%) vs baseline: +8.8% Memory: ❌ 68.811MB (SLO: <66.000MB +4.3%) vs baseline: 📈 +10.3% ❌ tracer-nativeTime: ❌ 23.741ms (SLO: <21.750ms +9.2%) vs baseline: 📈 +15.3% Memory: ❌ 74.943MB (SLO: <72.500MB +3.4%) vs baseline: 📈 +10.1% ❌ tracer-no-cachesTime: ❌ 20.901ms (SLO: <19.650ms +6.4%) vs baseline: 📈 +13.4% Memory: ❌ 69.049MB (SLO: <67.000MB +3.1%) vs baseline: 📈 +10.6% ❌ tracer-no-databasesTime: ❌ 21.176ms (SLO: <20.100ms +5.4%) vs baseline: 📈 +12.6% Memory: ❌ 68.855MB (SLO: <67.000MB +2.8%) vs baseline: 📈 +10.3% ❌ tracer-no-middlewareTime: ❌ 23.491ms (SLO: <21.500ms +9.3%) vs baseline: 📈 +16.3% Memory: ❌ 69.080MB (SLO: <67.000MB +3.1%) vs baseline: 📈 +10.6% ❌ tracer-no-templatesTime: ❌ 23.546ms (SLO: <22.000ms +7.0%) vs baseline: 📈 +15.7% Memory: ❌ 69.129MB (SLO: <67.000MB +3.2%) vs baseline: 📈 +10.7% ❌ errortrackingdjangosimple - 0/6❌ errortracking-enabled-allTime: ❌ 20.475ms (SLO: <19.850ms +3.1%) vs baseline: 📈 +13.4% Memory: ❌ 68.821MB (SLO: <66.500MB +3.5%) vs baseline: 📈 +10.7% ❌ errortracking-enabled-userTime: ❌ 20.468ms (SLO: <19.400ms +5.5%) vs baseline: 📈 +13.1% Memory: ❌ 68.826MB (SLO: <66.500MB +3.5%) vs baseline: 📈 +10.5% ❌ tracer-enabledTime: ❌ 20.517ms (SLO: <19.450ms +5.5%) vs baseline: 📈 +13.7% Memory: ❌ 68.703MB (SLO: <66.500MB +3.3%) vs baseline: 📈 +10.5% ❌ recursivecomputation - 1/8❌ deepTime: ❌ 338.392ms (SLO: <320.950ms +5.4%) vs baseline: +9.6% Memory: ❌ 35.409MB (SLO: <34.500MB +2.6%) vs baseline: 📈 +12.5% ❌ deep-profiledTime: ✅ 337.903ms (SLO: <359.150ms -5.9%) vs baseline: +3.2% Memory: ❌ 241.189MB (SLO: <39.000MB 📈 +518.4%) vs baseline: 📈 +573.5% ❌ mediumTime: ❌ 10.710ms (SLO: <7.400ms 📈 +44.7%) vs baseline: 📈 +51.6% Memory: ❌ 34.485MB (SLO: <34.000MB +1.4%) vs baseline: 📈 +12.9% ❌ shallowTime: ❌ 1.721ms (SLO: <1.050ms 📈 +63.9%) vs baseline: 📈 +79.6% Memory: ❌ 34.111MB (SLO: <34.000MB +0.3%) vs baseline: 📈 +11.3% ❌ span - 17/18✅ add-eventTime: ✅ 21.991ms (SLO: <22.500ms -2.3%) vs baseline: +6.4% Memory: ✅ 52.036MB (SLO: <53.000MB 🟡 -1.8%) vs baseline: +8.3% ✅ add-metricsTime: ✅ 92.072ms (SLO: <93.500ms 🟡 -1.5%) vs baseline: +1.0% Memory: ✅ 589.967MB (SLO: <961.000MB 📉 -38.6%) vs baseline: -6.4% ✅ add-tagsTime: ✅ 150.826ms (SLO: <155.000ms -2.7%) vs baseline: +2.5% Memory: ✅ 590.309MB (SLO: <962.500MB 📉 -38.7%) vs baseline: -6.5% ✅ get-contextTime: ✅ 20.295ms (SLO: <20.500ms 🟡 -1.0%) vs baseline: +5.0% Memory: ✅ 50.879MB (SLO: <53.000MB -4.0%) vs baseline: +8.4% ❌ is-recordingTime: ❌ 21.028ms (SLO: <20.500ms +2.6%) vs baseline: +7.7% Memory: ✅ 50.887MB (SLO: <53.000MB -4.0%) vs baseline: +8.6% ✅ record-exceptionTime: ✅ 40.162ms (SLO: <40.000ms +0.4%) vs baseline: +5.2% Memory: ✅ 43.602MB (SLO: <53.000MB 📉 -17.7%) vs baseline: +6.8% ✅ startTime: ✅ 20.466ms (SLO: <20.500ms 🟡 -0.2%) vs baseline: +6.6% Memory: ✅ 50.893MB (SLO: <53.000MB -4.0%) vs baseline: +8.4% ✅ start-traceid128Time: ✅ 21.227ms (SLO: <22.500ms -5.7%) vs baseline: +8.5% Memory: ✅ 50.901MB (SLO: <53.000MB -4.0%) vs baseline: +8.7% ✅ update-nameTime: ✅ 21.391ms (SLO: <22.000ms -2.8%) vs baseline: +10.0% Memory: ✅ 51.547MB (SLO: <53.000MB -2.7%) vs baseline: +8.5% 📈 Performance Regressions (2 suites)📈 iastaspectsospath - 24/24✅ ospathbasename_aspectTime: ✅ 4.296µs (SLO: <10.000µs 📉 -57.0%) vs baseline: +0.2% Memory: ✅ 37.729MB (SLO: <39.000MB -3.3%) vs baseline: +5.1% ✅ ospathbasename_noaspectTime: ✅ 1.086µs (SLO: <10.000µs 📉 -89.1%) vs baseline: -0.3% Memory: ✅ 37.690MB (SLO: <39.000MB -3.4%) vs baseline: +4.8% ✅ ospathjoin_aspectTime: ✅ 6.142µs (SLO: <10.000µs 📉 -38.6%) vs baseline: -0.4% Memory: ✅ 37.709MB (SLO: <39.000MB -3.3%) vs baseline: +4.9% ✅ ospathjoin_noaspectTime: ✅ 2.284µs (SLO: <10.000µs 📉 -77.2%) vs baseline: -0.5% Memory: ✅ 37.729MB (SLO: <39.000MB -3.3%) vs baseline: +5.0% ✅ ospathnormcase_aspectTime: ✅ 3.495µs (SLO: <10.000µs 📉 -65.0%) vs baseline: ~same Memory: ✅ 37.670MB (SLO: <39.000MB -3.4%) vs baseline: +5.0% ✅ ospathnormcase_noaspectTime: ✅ 0.572µs (SLO: <10.000µs 📉 -94.3%) vs baseline: -0.8% Memory: ✅ 37.709MB (SLO: <39.000MB -3.3%) vs baseline: +5.0% ✅ ospathsplit_aspectTime: ✅ 5.794µs (SLO: <10.000µs 📉 -42.1%) vs baseline: 📈 +18.6% Memory: ✅ 37.749MB (SLO: <39.000MB -3.2%) vs baseline: +4.9% ✅ ospathsplit_noaspectTime: ✅ 1.598µs (SLO: <10.000µs 📉 -84.0%) vs baseline: ~same Memory: ✅ 37.729MB (SLO: <39.000MB -3.3%) vs baseline: +5.1% ✅ ospathsplitdrive_aspectTime: ✅ 4.084µs (SLO: <10.000µs 📉 -59.2%) vs baseline: 📈 +10.6% Memory: ✅ 37.749MB (SLO: <39.000MB -3.2%) vs baseline: +5.1% ✅ ospathsplitdrive_noaspectTime: ✅ 0.698µs (SLO: <10.000µs 📉 -93.0%) vs baseline: -2.1% Memory: ✅ 37.729MB (SLO: <39.000MB -3.3%) vs baseline: +5.1% ✅ ospathsplitext_aspectTime: ✅ 4.593µs (SLO: <10.000µs 📉 -54.1%) vs baseline: +0.7% Memory: ✅ 37.709MB (SLO: <39.000MB -3.3%) vs baseline: +4.8% ✅ ospathsplitext_noaspectTime: ✅ 1.396µs (SLO: <10.000µs 📉 -86.0%) vs baseline: -0.3% Memory: ✅ 37.729MB (SLO: <39.000MB -3.3%) vs baseline: +5.0% 📈 otelspan - 16/16✅ add-eventTime: ✅ 41.087ms (SLO: <47.150ms 📉 -12.9%) vs baseline: -1.3% Memory: ✅ 44.723MB (SLO: <47.000MB -4.8%) vs baseline: +5.4% ✅ add-metricsTime: ✅ 94.242ms (SLO: <344.800ms 📉 -72.7%) vs baseline: 📉 -70.3% Memory: ✅ 39.474MB (SLO: <600.000MB 📉 -93.4%) vs baseline: 📉 -93.1% ✅ add-tagsTime: ✅ 94.654ms (SLO: <314.000ms 📉 -69.9%) vs baseline: 📉 -67.1% Memory: ✅ 39.449MB (SLO: <600.000MB 📉 -93.4%) vs baseline: 📉 -93.1% ✅ is-recordingTime: ✅ 39.613ms (SLO: <44.500ms 📉 -11.0%) vs baseline: +2.9% Memory: ✅ 44.695MB (SLO: <47.500MB -5.9%) vs baseline: +6.5% ✅ record-exceptionTime: ✅ 39.964ms (SLO: <67.650ms 📉 -40.9%) vs baseline: 📉 -31.6% Memory: ✅ 44.709MB (SLO: <47.000MB -4.9%) vs baseline: 📈 +16.5% ✅ set-statusTime: ✅ 40.064ms (SLO: <50.400ms 📉 -20.5%) vs baseline: -9.5% Memory: ✅ 44.718MB (SLO: <47.000MB -4.9%) vs baseline: +6.6% ✅ startTime: ✅ 40.988ms (SLO: <43.450ms -5.7%) vs baseline: +7.0% Memory: ✅ 44.710MB (SLO: <47.000MB -4.9%) vs baseline: +6.7% ✅ update-nameTime: ✅ 40.707ms (SLO: <45.150ms -9.8%) vs baseline: +3.0% Memory: ✅ 44.732MB (SLO: <47.000MB -4.8%) vs baseline: +6.2% 🟡 Near SLO Breach (1 suite)🟡 flasksimple - 6/6✅ debuggerTime: ✅ 1.873ms (SLO: <2.000ms -6.4%) vs baseline: +0.6% Memory: ✅ 45.436MB (SLO: <47.000MB -3.3%) vs baseline: +4.9% ✅ iast-getTime: ✅ 1.865ms (SLO: <2.000ms -6.8%) vs baseline: +0.3% Memory: ✅ 42.310MB (SLO: <49.000MB 📉 -13.7%) vs baseline: +4.7% ✅ profilerTime: ✅ 1.918ms (SLO: <2.100ms -8.6%) vs baseline: +0.3% Memory: ✅ 46.380MB (SLO: <47.000MB 🟡 -1.3%) vs baseline: +4.6%
|
Description
Testing
Risks
Additional Notes