refactor(profiling): use two-time upload api in libdatadog#16467
Conversation
Codeowners resolved as |
Performance SLOsComparing candidate kowalski/temp-profiling-use-two-time-upload-api-in-libdatadog (acbc592) with baseline main (be0fdf3) 📈 Performance Regressions (3 suites)📈 iastaspects - 118/118✅ add_aspectTime: ✅ 105.063µs (SLO: <130.000µs 📉 -19.2%) vs baseline: +3.5% Memory: ✅ 43.904MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ add_inplace_aspectTime: ✅ 102.612µs (SLO: <130.000µs 📉 -21.1%) vs baseline: ~same Memory: ✅ 43.829MB (SLO: <46.000MB -4.7%) vs baseline: +4.5% ✅ add_inplace_noaspectTime: ✅ 28.630µs (SLO: <40.000µs 📉 -28.4%) vs baseline: +0.9% Memory: ✅ 43.864MB (SLO: <46.000MB -4.6%) vs baseline: +4.7% ✅ add_noaspectTime: ✅ 49.229µs (SLO: <70.000µs 📉 -29.7%) vs baseline: +0.4% Memory: ✅ 43.995MB (SLO: <46.000MB -4.4%) vs baseline: +5.1% ✅ bytearray_aspectTime: ✅ 272.268µs (SLO: <400.000µs 📉 -31.9%) vs baseline: +2.1% Memory: ✅ 44.047MB (SLO: <46.000MB -4.2%) vs baseline: +5.4% ✅ bytearray_extend_aspectTime: ✅ 654.541µs (SLO: <800.000µs 📉 -18.2%) vs baseline: -1.0% Memory: ✅ 44.031MB (SLO: <46.000MB -4.3%) vs baseline: +5.0% ✅ bytearray_extend_noaspectTime: ✅ 267.989µs (SLO: <400.000µs 📉 -33.0%) vs baseline: -0.3% Memory: ✅ 43.813MB (SLO: <46.000MB -4.8%) vs baseline: +4.7% ✅ bytearray_noaspectTime: ✅ 140.608µs (SLO: <300.000µs 📉 -53.1%) vs baseline: -1.7% Memory: ✅ 43.935MB (SLO: <46.000MB -4.5%) vs baseline: +4.7% ✅ bytes_aspectTime: ✅ 232.854µs (SLO: <300.000µs 📉 -22.4%) vs baseline: -2.0% Memory: ✅ 43.807MB (SLO: <46.000MB -4.8%) vs baseline: +4.8% ✅ bytes_noaspectTime: ✅ 137.116µs (SLO: <200.000µs 📉 -31.4%) vs baseline: +1.1% Memory: ✅ 43.939MB (SLO: <46.000MB -4.5%) vs baseline: +5.1% ✅ bytesio_aspectTime: ✅ 3.866ms (SLO: <5.000ms 📉 -22.7%) vs baseline: +0.8% Memory: ✅ 43.980MB (SLO: <46.000MB -4.4%) vs baseline: +5.2% ✅ bytesio_noaspectTime: ✅ 318.066µs (SLO: <420.000µs 📉 -24.3%) vs baseline: +0.3% Memory: ✅ 43.940MB (SLO: <46.000MB -4.5%) vs baseline: +5.0% ✅ capitalize_aspectTime: ✅ 89.363µs (SLO: <300.000µs 📉 -70.2%) vs baseline: +0.3% Memory: ✅ 43.903MB (SLO: <46.000MB -4.6%) vs baseline: +4.9% ✅ capitalize_noaspectTime: ✅ 252.001µs (SLO: <300.000µs 📉 -16.0%) vs baseline: -0.4% Memory: ✅ 43.973MB (SLO: <46.000MB -4.4%) vs baseline: +5.0% ✅ casefold_aspectTime: ✅ 92.438µs (SLO: <500.000µs 📉 -81.5%) vs baseline: +2.7% Memory: ✅ 44.027MB (SLO: <46.000MB -4.3%) vs baseline: +5.2% ✅ casefold_noaspectTime: ✅ 307.042µs (SLO: <500.000µs 📉 -38.6%) vs baseline: -1.3% Memory: ✅ 43.983MB (SLO: <46.000MB -4.4%) vs baseline: +5.1% ✅ decode_aspectTime: ✅ 86.962µs (SLO: <100.000µs 📉 -13.0%) vs baseline: +0.2% Memory: ✅ 43.838MB (SLO: <46.000MB -4.7%) vs baseline: +4.6% ✅ decode_noaspectTime: ✅ 154.961µs (SLO: <210.000µs 📉 -26.2%) vs baseline: -0.5% Memory: ✅ 43.869MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ encode_aspectTime: ✅ 84.623µs (SLO: <200.000µs 📉 -57.7%) vs baseline: ~same Memory: ✅ 43.977MB (SLO: <46.000MB -4.4%) vs baseline: +5.0% ✅ encode_noaspectTime: ✅ 143.101µs (SLO: <200.000µs 📉 -28.4%) vs baseline: -1.7% Memory: ✅ 43.868MB (SLO: <46.000MB -4.6%) vs baseline: +4.7% ✅ format_aspectTime: ✅ 14.571ms (SLO: <19.200ms 📉 -24.1%) vs baseline: ~same Memory: ✅ 44.025MB (SLO: <46.000MB -4.3%) vs baseline: +4.9% ✅ format_map_aspectTime: ✅ 16.374ms (SLO: <21.500ms 📉 -23.8%) vs baseline: ~same Memory: ✅ 43.963MB (SLO: <46.000MB -4.4%) vs baseline: +4.7% ✅ format_map_noaspectTime: ✅ 374.487µs (SLO: <500.000µs 📉 -25.1%) vs baseline: +1.9% Memory: ✅ 43.881MB (SLO: <46.000MB -4.6%) vs baseline: +4.6% ✅ format_noaspectTime: ✅ 311.711µs (SLO: <500.000µs 📉 -37.7%) vs baseline: -1.0% Memory: ✅ 43.871MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ index_aspectTime: ✅ 125.562µs (SLO: <300.000µs 📉 -58.1%) vs baseline: -1.7% Memory: ✅ 44.013MB (SLO: <46.000MB -4.3%) vs baseline: +5.1% ✅ index_noaspectTime: ✅ 40.463µs (SLO: <300.000µs 📉 -86.5%) vs baseline: +0.3% Memory: ✅ 43.902MB (SLO: <46.000MB -4.6%) vs baseline: +4.6% ✅ join_aspectTime: ✅ 217.656µs (SLO: <300.000µs 📉 -27.4%) vs baseline: -0.2% Memory: ✅ 43.902MB (SLO: <46.000MB -4.6%) vs baseline: +4.8% ✅ join_noaspectTime: ✅ 146.587µs (SLO: <300.000µs 📉 -51.1%) vs baseline: ~same Memory: ✅ 43.940MB (SLO: <46.000MB -4.5%) vs baseline: +5.3% ✅ ljust_aspectTime: ✅ 506.481µs (SLO: <700.000µs 📉 -27.6%) vs baseline: -2.0% Memory: ✅ 43.973MB (SLO: <46.000MB -4.4%) vs baseline: +4.8% ✅ ljust_noaspectTime: ✅ 263.576µs (SLO: <300.000µs 📉 -12.1%) vs baseline: +1.5% Memory: ✅ 43.946MB (SLO: <46.000MB -4.5%) vs baseline: +5.4% ✅ lower_aspectTime: ✅ 307.880µs (SLO: <500.000µs 📉 -38.4%) vs baseline: -0.5% Memory: ✅ 43.875MB (SLO: <46.000MB -4.6%) vs baseline: +4.9% ✅ lower_noaspectTime: ✅ 237.263µs (SLO: <300.000µs 📉 -20.9%) vs baseline: -0.7% Memory: ✅ 43.799MB (SLO: <46.000MB -4.8%) vs baseline: +5.0% ✅ lstrip_aspectTime: ✅ 0.342ms (SLO: <3.000ms 📉 -88.6%) vs baseline: 📈 +25.3% Memory: ✅ 43.853MB (SLO: <46.000MB -4.7%) vs baseline: +4.7% ✅ lstrip_noaspectTime: ✅ 0.178ms (SLO: <3.000ms 📉 -94.1%) vs baseline: +0.6% Memory: ✅ 43.895MB (SLO: <46.000MB -4.6%) vs baseline: +4.8% ✅ modulo_aspectTime: ✅ 14.215ms (SLO: <18.750ms 📉 -24.2%) vs baseline: -0.4% Memory: ✅ 43.916MB (SLO: <46.000MB -4.5%) vs baseline: +4.6% ✅ modulo_aspect_for_bytearray_bytearrayTime: ✅ 14.743ms (SLO: <19.350ms 📉 -23.8%) vs baseline: ~same Memory: ✅ 44.141MB (SLO: <46.000MB -4.0%) vs baseline: +5.4% ✅ modulo_aspect_for_bytesTime: ✅ 14.335ms (SLO: <18.900ms 📉 -24.2%) vs baseline: -0.1% Memory: ✅ 44.025MB (SLO: <46.000MB -4.3%) vs baseline: +4.9% ✅ modulo_aspect_for_bytes_bytearrayTime: ✅ 14.536ms (SLO: <19.150ms 📉 -24.1%) vs baseline: -0.2% Memory: ✅ 43.961MB (SLO: <46.000MB -4.4%) vs baseline: +4.8% ✅ modulo_noaspectTime: ✅ 0.374ms (SLO: <3.000ms 📉 -87.5%) vs baseline: +0.3% Memory: ✅ 43.966MB (SLO: <46.000MB -4.4%) vs baseline: +5.0% ✅ replace_aspectTime: ✅ 18.930ms (SLO: <24.000ms 📉 -21.1%) vs baseline: +3.3% Memory: ✅ 44.038MB (SLO: <46.000MB -4.3%) vs baseline: +5.1% ✅ replace_noaspectTime: ✅ 282.923µs (SLO: <400.000µs 📉 -29.3%) vs baseline: -1.2% Memory: ✅ 43.827MB (SLO: <46.000MB -4.7%) vs baseline: +4.5% ✅ repr_aspectTime: ✅ 340.078µs (SLO: <420.000µs 📉 -19.0%) vs baseline: +2.3% Memory: ✅ 44.003MB (SLO: <46.000MB -4.3%) vs baseline: +5.0% ✅ repr_noaspectTime: ✅ 46.650µs (SLO: <90.000µs 📉 -48.2%) vs baseline: -0.5% Memory: ✅ 43.912MB (SLO: <46.000MB -4.5%) vs baseline: +4.8% ✅ rstrip_aspectTime: ✅ 393.828µs (SLO: <500.000µs 📉 -21.2%) vs baseline: -0.8% Memory: ✅ 43.918MB (SLO: <46.000MB -4.5%) vs baseline: +5.1% ✅ rstrip_noaspectTime: ✅ 182.070µs (SLO: <300.000µs 📉 -39.3%) vs baseline: -0.1% Memory: ✅ 43.830MB (SLO: <46.000MB -4.7%) vs baseline: +4.7% ✅ slice_aspectTime: ✅ 183.845µs (SLO: <300.000µs 📉 -38.7%) vs baseline: +0.4% Memory: ✅ 43.884MB (SLO: <46.000MB -4.6%) vs baseline: +4.8% ✅ slice_noaspectTime: ✅ 54.016µs (SLO: <90.000µs 📉 -40.0%) vs baseline: +0.3% Memory: ✅ 44.001MB (SLO: <46.000MB -4.3%) vs baseline: +4.8% ✅ stringio_aspectTime: ✅ 3.882ms (SLO: <5.000ms 📉 -22.4%) vs baseline: +0.4% Memory: ✅ 43.953MB (SLO: <46.000MB -4.4%) vs baseline: +5.1% ✅ stringio_noaspectTime: ✅ 353.980µs (SLO: <500.000µs 📉 -29.2%) vs baseline: +0.4% Memory: ✅ 43.884MB (SLO: <46.000MB -4.6%) vs baseline: +4.6% ✅ strip_aspectTime: ✅ 273.219µs (SLO: <350.000µs 📉 -21.9%) vs baseline: +0.5% Memory: ✅ 43.953MB (SLO: <46.000MB -4.5%) vs baseline: +5.0% ✅ strip_noaspectTime: ✅ 176.616µs (SLO: <240.000µs 📉 -26.4%) vs baseline: -0.2% Memory: ✅ 43.896MB (SLO: <46.000MB -4.6%) vs baseline: +4.9% ✅ swapcase_aspectTime: ✅ 347.137µs (SLO: <500.000µs 📉 -30.6%) vs baseline: +0.5% Memory: ✅ 43.819MB (SLO: <46.000MB -4.7%) vs baseline: +4.6% ✅ swapcase_noaspectTime: ✅ 275.254µs (SLO: <400.000µs 📉 -31.2%) vs baseline: +1.4% Memory: ✅ 43.882MB (SLO: <46.000MB -4.6%) vs baseline: +4.8% ✅ title_aspectTime: ✅ 335.374µs (SLO: <500.000µs 📉 -32.9%) vs baseline: +0.5% Memory: ✅ 43.837MB (SLO: <46.000MB -4.7%) vs baseline: +4.8% ✅ title_noaspectTime: ✅ 262.963µs (SLO: <400.000µs 📉 -34.3%) vs baseline: +0.5% Memory: ✅ 43.857MB (SLO: <46.000MB -4.7%) vs baseline: +4.8% ✅ translate_aspectTime: ✅ 579.881µs (SLO: <700.000µs 📉 -17.2%) vs baseline: 📈 +14.0% Memory: ✅ 43.959MB (SLO: <46.000MB -4.4%) vs baseline: +4.9% ✅ translate_noaspectTime: ✅ 430.606µs (SLO: <500.000µs 📉 -13.9%) vs baseline: -1.1% Memory: ✅ 43.973MB (SLO: <46.000MB -4.4%) vs baseline: +5.1% ✅ upper_aspectTime: ✅ 310.228µs (SLO: <500.000µs 📉 -38.0%) vs baseline: +0.2% Memory: ✅ 43.882MB (SLO: <46.000MB -4.6%) vs baseline: +4.8% ✅ upper_noaspectTime: ✅ 240.464µs (SLO: <400.000µs 📉 -39.9%) vs baseline: -0.2% Memory: ✅ 43.933MB (SLO: <46.000MB -4.5%) vs baseline: +5.1% 📈 iastaspectsospath - 24/24✅ ospathbasename_aspectTime: ✅ 542.051µs (SLO: <700.000µs 📉 -22.6%) vs baseline: 📈 +26.4% Memory: ✅ 43.900MB (SLO: <46.000MB -4.6%) vs baseline: +4.6% ✅ ospathbasename_noaspectTime: ✅ 438.578µs (SLO: <700.000µs 📉 -37.3%) vs baseline: +0.6% Memory: ✅ 43.879MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ ospathjoin_aspectTime: ✅ 636.524µs (SLO: <700.000µs -9.1%) vs baseline: -0.4% Memory: ✅ 44.007MB (SLO: <46.000MB -4.3%) vs baseline: +5.0% ✅ ospathjoin_noaspectTime: ✅ 646.017µs (SLO: <700.000µs -7.7%) vs baseline: +1.1% Memory: ✅ 43.762MB (SLO: <46.000MB -4.9%) vs baseline: +4.5% ✅ ospathnormcase_aspectTime: ✅ 361.022µs (SLO: <700.000µs 📉 -48.4%) vs baseline: +1.1% Memory: ✅ 43.904MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ ospathnormcase_noaspectTime: ✅ 367.979µs (SLO: <700.000µs 📉 -47.4%) vs baseline: +0.5% Memory: ✅ 43.845MB (SLO: <46.000MB -4.7%) vs baseline: +5.0% ✅ ospathsplit_aspectTime: ✅ 499.321µs (SLO: <700.000µs 📉 -28.7%) vs baseline: -0.4% Memory: ✅ 43.887MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ ospathsplit_noaspectTime: ✅ 511.011µs (SLO: <700.000µs 📉 -27.0%) vs baseline: ~same Memory: ✅ 43.823MB (SLO: <46.000MB -4.7%) vs baseline: +4.5% ✅ ospathsplitdrive_aspectTime: ✅ 381.206µs (SLO: <700.000µs 📉 -45.5%) vs baseline: +0.2% Memory: ✅ 43.795MB (SLO: <46.000MB -4.8%) vs baseline: +4.7% ✅ ospathsplitdrive_noaspectTime: ✅ 73.017µs (SLO: <700.000µs 📉 -89.6%) vs baseline: -1.7% Memory: ✅ 43.734MB (SLO: <46.000MB -4.9%) vs baseline: +4.5% ✅ ospathsplitext_aspectTime: ✅ 462.188µs (SLO: <700.000µs 📉 -34.0%) vs baseline: -0.8% Memory: ✅ 43.962MB (SLO: <46.000MB -4.4%) vs baseline: +5.0% ✅ ospathsplitext_noaspectTime: ✅ 470.960µs (SLO: <700.000µs 📉 -32.7%) vs baseline: -1.0% Memory: ✅ 43.861MB (SLO: <46.000MB -4.6%) vs baseline: +4.8% 📈 telemetryaddmetric - 30/30✅ 1-count-metric-1-timesTime: ✅ 2.389µs (SLO: <20.000µs 📉 -88.1%) vs baseline: 📈 +13.3% Memory: ✅ 36.196MB (SLO: <38.000MB -4.7%) vs baseline: +4.3% ✅ 1-count-metrics-100-timesTime: ✅ 152.542µs (SLO: <220.000µs 📉 -30.7%) vs baseline: -1.2% Memory: ✅ 36.313MB (SLO: <38.000MB -4.4%) vs baseline: +4.9% ✅ 1-distribution-metric-1-timesTime: ✅ 2.501µs (SLO: <20.000µs 📉 -87.5%) vs baseline: ~same Memory: ✅ 36.333MB (SLO: <38.000MB -4.4%) vs baseline: +5.0% ✅ 1-distribution-metrics-100-timesTime: ✅ 166.909µs (SLO: <230.000µs 📉 -27.4%) vs baseline: +1.5% Memory: ✅ 36.313MB (SLO: <38.000MB -4.4%) vs baseline: +4.9% ✅ 1-gauge-metric-1-timesTime: ✅ 1.996µs (SLO: <20.000µs 📉 -90.0%) vs baseline: -1.4% Memory: ✅ 36.392MB (SLO: <38.000MB -4.2%) vs baseline: +5.1% ✅ 1-gauge-metrics-100-timesTime: ✅ 136.671µs (SLO: <150.000µs -8.9%) vs baseline: -0.7% Memory: ✅ 36.235MB (SLO: <38.000MB -4.6%) vs baseline: +4.6% ✅ 1-rate-metric-1-timesTime: ✅ 2.253µs (SLO: <20.000µs 📉 -88.7%) vs baseline: -0.3% Memory: ✅ 36.313MB (SLO: <38.000MB -4.4%) vs baseline: +5.0% ✅ 1-rate-metrics-100-timesTime: ✅ 165.803µs (SLO: <250.000µs 📉 -33.7%) vs baseline: -0.1% Memory: ✅ 36.294MB (SLO: <38.000MB -4.5%) vs baseline: +4.9% ✅ 100-count-metrics-100-timesTime: ✅ 15.318ms (SLO: <22.000ms 📉 -30.4%) vs baseline: -1.4% Memory: ✅ 36.313MB (SLO: <38.000MB -4.4%) vs baseline: +4.9% ✅ 100-distribution-metrics-100-timesTime: ✅ 1.746ms (SLO: <2.550ms 📉 -31.5%) vs baseline: -0.6% Memory: ✅ 36.785MB (SLO: <38.000MB -3.2%) vs baseline: +5.3% ✅ 100-gauge-metrics-100-timesTime: ✅ 1.405ms (SLO: <1.550ms -9.4%) vs baseline: +0.2% Memory: ✅ 36.215MB (SLO: <38.000MB -4.7%) vs baseline: +4.4% ✅ 100-rate-metrics-100-timesTime: ✅ 1.713ms (SLO: <2.550ms 📉 -32.8%) vs baseline: ~same Memory: ✅ 36.313MB (SLO: <38.000MB -4.4%) vs baseline: +4.7% ✅ flush-1-metricTime: ✅ 3.674µs (SLO: <20.000µs 📉 -81.6%) vs baseline: -0.6% Memory: ✅ 36.648MB (SLO: <38.000MB -3.6%) vs baseline: +4.9% ✅ flush-100-metricsTime: ✅ 177.745µs (SLO: <250.000µs 📉 -28.9%) vs baseline: +0.3% Memory: ✅ 36.648MB (SLO: <38.000MB -3.6%) vs baseline: +4.7% ✅ flush-1000-metricsTime: ✅ 2.198ms (SLO: <2.500ms 📉 -12.1%) vs baseline: +0.2% Memory: ✅ 37.415MB (SLO: <38.750MB -3.4%) vs baseline: +4.9% 🟡 Near SLO Breach (5 suites)🟡 djangosimple - 28/28✅ appsecTime: ✅ 19.703ms (SLO: <22.300ms 📉 -11.6%) vs baseline: -0.2% Memory: ✅ 71.428MB (SLO: <73.500MB -2.8%) vs baseline: +4.9% ✅ exception-replay-enabledTime: ✅ 1.366ms (SLO: <1.450ms -5.8%) vs baseline: -0.1% Memory: ✅ 69.698MB (SLO: <71.500MB -2.5%) vs baseline: +4.9% ✅ iastTime: ✅ 19.663ms (SLO: <22.250ms 📉 -11.6%) vs baseline: -0.2% Memory: ✅ 71.447MB (SLO: <75.000MB -4.7%) vs baseline: +4.9% ✅ profilerTime: ✅ 15.129ms (SLO: <16.550ms -8.6%) vs baseline: +0.2% Memory: ✅ 60.418MB (SLO: <61.000MB 🟡 -1.0%) vs baseline: +4.9% ✅ resource-renamingTime: ✅ 19.532ms (SLO: <21.750ms 📉 -10.2%) vs baseline: -0.4% Memory: ✅ 71.329MB (SLO: <73.500MB -3.0%) vs baseline: +4.6% ✅ span-code-originTime: ✅ 20.146ms (SLO: <28.200ms 📉 -28.6%) vs baseline: +1.1% Memory: ✅ 71.487MB (SLO: <75.000MB -4.7%) vs baseline: +4.9% ✅ tracerTime: ✅ 19.682ms (SLO: <21.750ms -9.5%) vs baseline: -0.1% Memory: ✅ 71.329MB (SLO: <75.000MB -4.9%) vs baseline: +4.9% ✅ tracer-and-profilerTime: ✅ 20.980ms (SLO: <23.500ms 📉 -10.7%) vs baseline: -0.1% Memory: ✅ 73.295MB (SLO: <75.000MB -2.3%) vs baseline: +4.9% ✅ tracer-dont-create-db-spansTime: ✅ 19.714ms (SLO: <21.500ms -8.3%) vs baseline: -0.2% Memory: ✅ 71.388MB (SLO: <75.000MB -4.8%) vs baseline: +4.8% ✅ tracer-minimalTime: ✅ 17.916ms (SLO: <18.500ms -3.2%) vs baseline: +0.4% Memory: ✅ 71.447MB (SLO: <75.000MB -4.7%) vs baseline: +5.0% ✅ tracer-no-cachesTime: ✅ 18.860ms (SLO: <19.650ms -4.0%) vs baseline: ~same Memory: ✅ 71.349MB (SLO: <75.000MB -4.9%) vs baseline: +4.8% ✅ tracer-no-databasesTime: ✅ 20.650ms (SLO: <21.100ms -2.1%) vs baseline: +0.3% Memory: ✅ 71.467MB (SLO: <75.000MB -4.7%) vs baseline: +5.0% ✅ tracer-no-middlewareTime: ✅ 19.376ms (SLO: <21.500ms -9.9%) vs baseline: ~same Memory: ✅ 71.329MB (SLO: <75.000MB -4.9%) vs baseline: +4.7% ✅ tracer-no-templatesTime: ✅ 19.540ms (SLO: <22.000ms 📉 -11.2%) vs baseline: +0.8% Memory: ✅ 71.349MB (SLO: <73.500MB -2.9%) vs baseline: +4.7% 🟡 otelspan - 22/22✅ add-eventTime: ✅ 40.595ms (SLO: <47.150ms 📉 -13.9%) vs baseline: -0.2% Memory: ✅ 41.241MB (SLO: <47.000MB 📉 -12.3%) vs baseline: +4.7% ✅ add-metricsTime: ✅ 238.539ms (SLO: <344.800ms 📉 -30.8%) vs baseline: +1.1% Memory: ✅ 45.715MB (SLO: <47.500MB -3.8%) vs baseline: +4.9% ✅ add-tagsTime: ✅ 266.761ms (SLO: <330.000ms 📉 -19.2%) vs baseline: -0.5% Memory: ✅ 45.855MB (SLO: <47.500MB -3.5%) vs baseline: +5.0% ✅ get-contextTime: ✅ 83.658ms (SLO: <92.350ms -9.4%) vs baseline: +0.1% Memory: ✅ 41.642MB (SLO: <46.500MB 📉 -10.4%) vs baseline: +5.2% ✅ is-recordingTime: ✅ 38.994ms (SLO: <44.500ms 📉 -12.4%) vs baseline: ~same Memory: ✅ 41.183MB (SLO: <47.500MB 📉 -13.3%) vs baseline: +4.8% ✅ record-exceptionTime: ✅ 60.807ms (SLO: <67.650ms 📉 -10.1%) vs baseline: -0.2% Memory: ✅ 41.859MB (SLO: <47.000MB 📉 -10.9%) vs baseline: +4.9% ✅ set-statusTime: ✅ 44.852ms (SLO: <50.400ms 📉 -11.0%) vs baseline: +0.3% Memory: ✅ 41.229MB (SLO: <47.000MB 📉 -12.3%) vs baseline: +4.9% ✅ startTime: ✅ 39.969ms (SLO: <44.500ms 📉 -10.2%) vs baseline: +4.1% Memory: ✅ 41.168MB (SLO: <47.000MB 📉 -12.4%) vs baseline: +4.6% ✅ start-finishTime: ✅ 89.599ms (SLO: <92.000ms -2.6%) vs baseline: -0.8% Memory: ✅ 38.909MB (SLO: <46.500MB 📉 -16.3%) vs baseline: +4.9% ✅ start-finish-telemetryTime: ✅ 91.298ms (SLO: <93.000ms 🟡 -1.8%) vs baseline: -0.1% Memory: ✅ 38.810MB (SLO: <46.500MB 📉 -16.5%) vs baseline: +5.0% ✅ update-nameTime: ✅ 40.117ms (SLO: <45.150ms 📉 -11.1%) vs baseline: ~same Memory: ✅ 41.393MB (SLO: <47.000MB 📉 -11.9%) vs baseline: +5.0% 🟡 recursivecomputation - 8/8✅ deepTime: ✅ 312.333ms (SLO: <320.950ms -2.7%) vs baseline: +0.2% Memory: ✅ 37.395MB (SLO: <38.750MB -3.5%) vs baseline: +4.8% ✅ deep-profiledTime: ✅ 327.848ms (SLO: <359.150ms -8.7%) vs baseline: -0.5% Memory: ✅ 43.726MB (SLO: <46.000MB -4.9%) vs baseline: +4.7% ✅ mediumTime: ✅ 7.338ms (SLO: <7.450ms 🟡 -1.5%) vs baseline: -0.1% Memory: ✅ 36.333MB (SLO: <38.000MB -4.4%) vs baseline: +4.9% ✅ shallowTime: ✅ 1.038ms (SLO: <1.050ms 🟡 -1.1%) vs baseline: +2.2% Memory: ✅ 36.451MB (SLO: <38.000MB -4.1%) vs baseline: +5.1% 🟡 span - 26/26✅ add-eventTime: ✅ 19.729ms (SLO: <22.500ms 📉 -12.3%) vs baseline: +0.2% Memory: ✅ 38.793MB (SLO: <53.000MB 📉 -26.8%) vs baseline: +5.3% ✅ add-metricsTime: ✅ 89.693ms (SLO: <93.500ms -4.1%) vs baseline: +0.7% Memory: ✅ 43.018MB (SLO: <53.000MB 📉 -18.8%) vs baseline: +5.1% ✅ add-tagsTime: ✅ 136.414ms (SLO: <155.000ms 📉 -12.0%) vs baseline: ~same Memory: ✅ 43.042MB (SLO: <53.000MB 📉 -18.8%) vs baseline: +5.1% ✅ get-contextTime: ✅ 18.850ms (SLO: <20.500ms -8.1%) vs baseline: +0.1% Memory: ✅ 38.343MB (SLO: <53.000MB 📉 -27.7%) vs baseline: +4.7% ✅ is-recordingTime: ✅ 18.984ms (SLO: <20.500ms -7.4%) vs baseline: +0.4% Memory: ✅ 38.457MB (SLO: <53.000MB 📉 -27.4%) vs baseline: +4.8% ✅ record-exceptionTime: ✅ 38.589ms (SLO: <41.000ms -5.9%) vs baseline: +0.6% Memory: ✅ 38.895MB (SLO: <53.000MB 📉 -26.6%) vs baseline: +4.8% ✅ set-statusTime: ✅ 20.580ms (SLO: <22.000ms -6.5%) vs baseline: ~same Memory: ✅ 38.507MB (SLO: <53.000MB 📉 -27.3%) vs baseline: +5.0% ✅ startTime: ✅ 19.882ms (SLO: <20.500ms -3.0%) vs baseline: +6.1% Memory: ✅ 38.409MB (SLO: <53.000MB 📉 -27.5%) vs baseline: +4.8% ✅ start-finishTime: ✅ 58.223ms (SLO: <58.500ms 🟡 -0.5%) vs baseline: +0.1% Memory: ✅ 36.274MB (SLO: <38.000MB -4.5%) vs baseline: +5.1% ✅ start-finish-telemetryTime: ✅ 59.513ms (SLO: <60.000ms 🟡 -0.8%) vs baseline: ~same Memory: ✅ 36.313MB (SLO: <38.000MB -4.4%) vs baseline: +5.1% ✅ start-finish-traceid128Time: ✅ 60.650ms (SLO: <62.000ms -2.2%) vs baseline: -0.1% Memory: ✅ 36.353MB (SLO: <38.000MB -4.3%) vs baseline: +5.1% ✅ start-traceid128Time: ✅ 18.847ms (SLO: <22.500ms 📉 -16.2%) vs baseline: +0.4% Memory: ✅ 38.490MB (SLO: <53.000MB 📉 -27.4%) vs baseline: +5.0% ✅ update-nameTime: ✅ 19.363ms (SLO: <22.000ms 📉 -12.0%) vs baseline: +0.2% Memory: ✅ 38.351MB (SLO: <53.000MB 📉 -27.6%) vs baseline: +5.0% 🟡 tracer - 6/6✅ largeTime: ✅ 33.223ms (SLO: <33.950ms -2.1%) vs baseline: +0.4% Memory: ✅ 37.867MB (SLO: <39.250MB -3.5%) vs baseline: +4.6% ✅ mediumTime: ✅ 3.330ms (SLO: <3.500ms -4.8%) vs baseline: -0.2% Memory: ✅ 36.313MB (SLO: <38.750MB -6.3%) vs baseline: +5.0% ✅ smallTime: ✅ 388.047µs (SLO: <390.000µs 🟡 -0.5%) vs baseline: +3.6% Memory: ✅ 36.333MB (SLO: <38.750MB -6.2%) vs baseline: +5.1%
|
ac97265 to
a6fa778
Compare
a6fa778 to
3626ef8
Compare
309dcbb to
499d53c
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 499d53cc58
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
## What does this PR do? This PR splits the Exporter creation process into two steps (two functions to call): 1. Create the Tokio runtime with `init_runtime` 2. Upload the Profile with `send_blocking` (`send_blocking` calls `init_runtime` if it hasn't been initialised from the outside) This fixes a TSan-detected race condition where we try to cancel the Upload request (using the Cancellation Token) at the same time the runtime is being initialised. Example runtime Profiler fix PR: DataDog/dd-trace-py#16467 The PR also updates the existing `exporter.cpp` example to use the new function (tested with `cargo ffi-test --filter exporter`). ## Open questions Currently, the PR maintains compatibility with existing usages -- not explicitly calling `init_runtime` will make `send_blocking` call it when it needs it. However, this is risky (for the reasons that made us make this PR in the first place). * Should we prevent people from doing this? _Doing so will break compatibility with current usages._ * ... Or should we instead keep the race? _Doing so will guarantee backwards compatibility but also not force usages to be fixed._ --- We ended up going for the second, keeping the race so that we don't have a breaking API change. Co-authored-by: thomas.kowalski <thomas.kowalski@datadoghq.com>
499d53c to
acbc592
Compare
acbc592 to
0d1daf7
Compare
0d1daf7 to
7388ded
Compare
What does this PR do?
This PR changes the Profiler codebase to use the new two-time upload API (1. create the
tokioruntime; 2. actually start the upload) to avoid a race condition often reported by TSan theprofiling_nativejob -- see DataDog/libdatadog#1733. prThe problem was that in some cases, we could have a thread trying to use a cancellation token to cancel an ongoing upload before the associated
tokioruntime had finished initialising, leading to that race condition.This same race condition was also responsible for some crashes reported by Crash Tracking.
Note this PR currently points to a specific commit SHA in
libdatadog-- before merging it we'll have to update that SHA and upgradelibdatadogindd-trace-pyto be able to use that new API.