chore(profiling): ensure correct order of profiler post-fork hooks#17418
Conversation
This comment has been minimized.
This comment has been minimized.
Performance SLOsComparing candidate kowalski/fix-profiling-ensure-correct-order-of-profiler-post-fork-hooks-17183 (d1602c2) with baseline main (d233350) 📈 Performance Regressions (2 suites)📈 iastaspects - 118/118✅ add_aspectTime: ✅ 104.318µs (SLO: <130.000µs 📉 -19.8%) vs baseline: +3.8% Memory: ✅ 43.953MB (SLO: <46.000MB -4.5%) vs baseline: +5.0% ✅ add_inplace_aspectTime: ✅ 100.985µs (SLO: <130.000µs 📉 -22.3%) vs baseline: -0.4% Memory: ✅ 43.844MB (SLO: <46.000MB -4.7%) vs baseline: +4.7% ✅ add_inplace_noaspectTime: ✅ 28.085µs (SLO: <40.000µs 📉 -29.8%) vs baseline: -0.7% Memory: ✅ 43.839MB (SLO: <46.000MB -4.7%) vs baseline: +4.9% ✅ add_noaspectTime: ✅ 48.955µs (SLO: <70.000µs 📉 -30.1%) vs baseline: +0.2% Memory: ✅ 43.862MB (SLO: <46.000MB -4.6%) vs baseline: +4.8% ✅ bytearray_aspectTime: ✅ 256.505µs (SLO: <400.000µs 📉 -35.9%) vs baseline: +1.7% Memory: ✅ 43.946MB (SLO: <46.000MB -4.5%) vs baseline: +5.0% ✅ bytearray_extend_aspectTime: ✅ 659.326µs (SLO: <800.000µs 📉 -17.6%) vs baseline: -1.1% Memory: ✅ 43.915MB (SLO: <46.000MB -4.5%) vs baseline: +5.1% ✅ bytearray_extend_noaspectTime: ✅ 269.535µs (SLO: <400.000µs 📉 -32.6%) vs baseline: ~same Memory: ✅ 43.898MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ bytearray_noaspectTime: ✅ 141.588µs (SLO: <300.000µs 📉 -52.8%) vs baseline: +2.2% Memory: ✅ 43.924MB (SLO: <46.000MB -4.5%) vs baseline: +5.2% ✅ bytes_aspectTime: ✅ 220.919µs (SLO: <300.000µs 📉 -26.4%) vs baseline: +0.6% Memory: ✅ 43.921MB (SLO: <46.000MB -4.5%) vs baseline: +4.9% ✅ bytes_noaspectTime: ✅ 134.064µs (SLO: <200.000µs 📉 -33.0%) vs baseline: -0.7% Memory: ✅ 43.741MB (SLO: <46.000MB -4.9%) vs baseline: +4.6% ✅ bytesio_aspectTime: ✅ 3.783ms (SLO: <5.000ms 📉 -24.3%) vs baseline: -1.1% Memory: ✅ 43.926MB (SLO: <46.000MB -4.5%) vs baseline: +4.9% ✅ bytesio_noaspectTime: ✅ 317.940µs (SLO: <420.000µs 📉 -24.3%) vs baseline: ~same Memory: ✅ 43.900MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ capitalize_aspectTime: ✅ 88.177µs (SLO: <300.000µs 📉 -70.6%) vs baseline: +0.3% Memory: ✅ 43.883MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ capitalize_noaspectTime: ✅ 253.538µs (SLO: <300.000µs 📉 -15.5%) vs baseline: +2.2% Memory: ✅ 43.835MB (SLO: <46.000MB -4.7%) vs baseline: +4.7% ✅ casefold_aspectTime: ✅ 88.444µs (SLO: <500.000µs 📉 -82.3%) vs baseline: -0.3% Memory: ✅ 43.871MB (SLO: <46.000MB -4.6%) vs baseline: +4.7% ✅ casefold_noaspectTime: ✅ 308.782µs (SLO: <500.000µs 📉 -38.2%) vs baseline: +1.1% Memory: ✅ 43.825MB (SLO: <46.000MB -4.7%) vs baseline: +4.7% ✅ decode_aspectTime: ✅ 86.796µs (SLO: <100.000µs 📉 -13.2%) vs baseline: -0.8% Memory: ✅ 43.799MB (SLO: <46.000MB -4.8%) vs baseline: +4.7% ✅ decode_noaspectTime: ✅ 155.878µs (SLO: <210.000µs 📉 -25.8%) vs baseline: -0.9% Memory: ✅ 43.909MB (SLO: <46.000MB -4.5%) vs baseline: +4.8% ✅ encode_aspectTime: ✅ 84.636µs (SLO: <200.000µs 📉 -57.7%) vs baseline: +0.2% Memory: ✅ 43.832MB (SLO: <46.000MB -4.7%) vs baseline: +5.0% ✅ encode_noaspectTime: ✅ 143.695µs (SLO: <200.000µs 📉 -28.2%) vs baseline: +0.2% Memory: ✅ 43.842MB (SLO: <46.000MB -4.7%) vs baseline: +4.7% ✅ format_aspectTime: ✅ 14.651ms (SLO: <19.200ms 📉 -23.7%) vs baseline: +0.3% Memory: ✅ 43.949MB (SLO: <46.000MB -4.5%) vs baseline: +4.8% ✅ format_map_aspectTime: ✅ 16.469ms (SLO: <21.500ms 📉 -23.4%) vs baseline: ~same Memory: ✅ 43.922MB (SLO: <46.000MB -4.5%) vs baseline: +4.6% ✅ format_map_noaspectTime: ✅ 380.092µs (SLO: <500.000µs 📉 -24.0%) vs baseline: -2.7% Memory: ✅ 43.897MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ format_noaspectTime: ✅ 308.453µs (SLO: <500.000µs 📉 -38.3%) vs baseline: -1.5% Memory: ✅ 43.948MB (SLO: <46.000MB -4.5%) vs baseline: +5.1% ✅ index_aspectTime: ✅ 136.588µs (SLO: <300.000µs 📉 -54.5%) vs baseline: 📈 +10.4% Memory: ✅ 43.829MB (SLO: <46.000MB -4.7%) vs baseline: +4.8% ✅ index_noaspectTime: ✅ 40.980µs (SLO: <300.000µs 📉 -86.3%) vs baseline: +0.8% Memory: ✅ 43.803MB (SLO: <46.000MB -4.8%) vs baseline: +4.7% ✅ join_aspectTime: ✅ 209.173µs (SLO: <300.000µs 📉 -30.3%) vs baseline: -0.7% Memory: ✅ 43.836MB (SLO: <46.000MB -4.7%) vs baseline: +4.6% ✅ join_noaspectTime: ✅ 141.565µs (SLO: <300.000µs 📉 -52.8%) vs baseline: -1.8% Memory: ✅ 43.849MB (SLO: <46.000MB -4.7%) vs baseline: +4.8% ✅ ljust_aspectTime: ✅ 576.000µs (SLO: <700.000µs 📉 -17.7%) vs baseline: 📈 +14.6% Memory: ✅ 43.848MB (SLO: <46.000MB -4.7%) vs baseline: +4.6% ✅ ljust_noaspectTime: ✅ 256.621µs (SLO: <300.000µs 📉 -14.5%) vs baseline: -0.5% Memory: ✅ 43.842MB (SLO: <46.000MB -4.7%) vs baseline: +4.9% ✅ lower_aspectTime: ✅ 302.973µs (SLO: <500.000µs 📉 -39.4%) vs baseline: -2.9% Memory: ✅ 43.868MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ lower_noaspectTime: ✅ 238.619µs (SLO: <300.000µs 📉 -20.5%) vs baseline: +0.9% Memory: ✅ 43.786MB (SLO: <46.000MB -4.8%) vs baseline: +4.6% ✅ lstrip_aspectTime: ✅ 0.275ms (SLO: <3.000ms 📉 -90.8%) vs baseline: -1.9% Memory: ✅ 43.910MB (SLO: <46.000MB -4.5%) vs baseline: +4.8% ✅ lstrip_noaspectTime: ✅ 0.180ms (SLO: <3.000ms 📉 -94.0%) vs baseline: +2.1% Memory: ✅ 43.826MB (SLO: <46.000MB -4.7%) vs baseline: +4.8% ✅ modulo_aspectTime: ✅ 14.309ms (SLO: <18.750ms 📉 -23.7%) vs baseline: +0.4% Memory: ✅ 43.967MB (SLO: <46.000MB -4.4%) vs baseline: +5.1% ✅ modulo_aspect_for_bytearray_bytearrayTime: ✅ 14.789ms (SLO: <19.350ms 📉 -23.6%) vs baseline: ~same Memory: ✅ 43.931MB (SLO: <46.000MB -4.5%) vs baseline: +5.1% ✅ modulo_aspect_for_bytesTime: ✅ 14.391ms (SLO: <18.900ms 📉 -23.9%) vs baseline: -0.3% Memory: ✅ 43.973MB (SLO: <46.000MB -4.4%) vs baseline: +5.0% ✅ modulo_aspect_for_bytes_bytearrayTime: ✅ 14.677ms (SLO: <19.150ms 📉 -23.4%) vs baseline: ~same Memory: ✅ 43.964MB (SLO: <46.000MB -4.4%) vs baseline: +5.0% ✅ modulo_noaspectTime: ✅ 0.364ms (SLO: <3.000ms 📉 -87.9%) vs baseline: -1.2% Memory: ✅ 43.820MB (SLO: <46.000MB -4.7%) vs baseline: +4.4% ✅ replace_aspectTime: ✅ 18.511ms (SLO: <24.000ms 📉 -22.9%) vs baseline: ~same Memory: ✅ 43.933MB (SLO: <46.000MB -4.5%) vs baseline: +4.7% ✅ replace_noaspectTime: ✅ 284.912µs (SLO: <400.000µs 📉 -28.8%) vs baseline: +0.3% Memory: ✅ 43.860MB (SLO: <46.000MB -4.7%) vs baseline: +4.8% ✅ repr_aspectTime: ✅ 325.271µs (SLO: <420.000µs 📉 -22.6%) vs baseline: +0.5% Memory: ✅ 43.881MB (SLO: <46.000MB -4.6%) vs baseline: +4.9% ✅ repr_noaspectTime: ✅ 47.260µs (SLO: <90.000µs 📉 -47.5%) vs baseline: +0.9% Memory: ✅ 43.839MB (SLO: <46.000MB -4.7%) vs baseline: +5.0% ✅ rstrip_aspectTime: ✅ 391.220µs (SLO: <500.000µs 📉 -21.8%) vs baseline: +1.0% Memory: ✅ 43.875MB (SLO: <46.000MB -4.6%) vs baseline: +4.9% ✅ rstrip_noaspectTime: ✅ 182.505µs (SLO: <300.000µs 📉 -39.2%) vs baseline: -1.4% Memory: ✅ 43.768MB (SLO: <46.000MB -4.9%) vs baseline: +4.5% ✅ slice_aspectTime: ✅ 185.734µs (SLO: <300.000µs 📉 -38.1%) vs baseline: +0.6% Memory: ✅ 43.839MB (SLO: <46.000MB -4.7%) vs baseline: +4.7% ✅ slice_noaspectTime: ✅ 53.839µs (SLO: <90.000µs 📉 -40.2%) vs baseline: -1.0% Memory: ✅ 43.812MB (SLO: <46.000MB -4.8%) vs baseline: +4.6% ✅ stringio_aspectTime: ✅ 3.789ms (SLO: <5.000ms 📉 -24.2%) vs baseline: -1.1% Memory: ✅ 43.853MB (SLO: <46.000MB -4.7%) vs baseline: +4.5% ✅ stringio_noaspectTime: ✅ 379.287µs (SLO: <500.000µs 📉 -24.1%) vs baseline: +8.9% Memory: ✅ 43.710MB (SLO: <46.000MB -5.0%) vs baseline: +4.5% ✅ strip_aspectTime: ✅ 275.622µs (SLO: <350.000µs 📉 -21.3%) vs baseline: -2.1% Memory: ✅ 43.867MB (SLO: <46.000MB -4.6%) vs baseline: +4.8% ✅ strip_noaspectTime: ✅ 179.855µs (SLO: <240.000µs 📉 -25.1%) vs baseline: +1.4% Memory: ✅ 43.830MB (SLO: <46.000MB -4.7%) vs baseline: +4.8% ✅ swapcase_aspectTime: ✅ 336.947µs (SLO: <500.000µs 📉 -32.6%) vs baseline: +0.8% Memory: ✅ 43.913MB (SLO: <46.000MB -4.5%) vs baseline: +4.9% ✅ swapcase_noaspectTime: ✅ 275.310µs (SLO: <400.000µs 📉 -31.2%) vs baseline: +0.4% Memory: ✅ 43.763MB (SLO: <46.000MB -4.9%) vs baseline: +4.8% ✅ title_aspectTime: ✅ 333.185µs (SLO: <500.000µs 📉 -33.4%) vs baseline: +0.6% Memory: ✅ 43.936MB (SLO: <46.000MB -4.5%) vs baseline: +5.0% ✅ title_noaspectTime: ✅ 259.590µs (SLO: <400.000µs 📉 -35.1%) vs baseline: -1.2% Memory: ✅ 43.865MB (SLO: <46.000MB -4.6%) vs baseline: +4.8% ✅ translate_aspectTime: ✅ 504.055µs (SLO: <700.000µs 📉 -28.0%) vs baseline: +1.0% Memory: ✅ 43.870MB (SLO: <46.000MB -4.6%) vs baseline: +4.8% ✅ translate_noaspectTime: ✅ 427.306µs (SLO: <500.000µs 📉 -14.5%) vs baseline: -0.1% Memory: ✅ 43.879MB (SLO: <46.000MB -4.6%) vs baseline: +4.7% ✅ upper_aspectTime: ✅ 302.980µs (SLO: <500.000µs 📉 -39.4%) vs baseline: -0.6% Memory: ✅ 43.824MB (SLO: <46.000MB -4.7%) vs baseline: +4.7% ✅ upper_noaspectTime: ✅ 234.259µs (SLO: <400.000µs 📉 -41.4%) vs baseline: -1.1% Memory: ✅ 43.864MB (SLO: <46.000MB -4.6%) vs baseline: +4.7% 📈 iastaspectsospath - 24/24✅ ospathbasename_aspectTime: ✅ 512.982µs (SLO: <700.000µs 📉 -26.7%) vs baseline: 📈 +19.6% Memory: ✅ 43.824MB (SLO: <46.000MB -4.7%) vs baseline: +5.0% ✅ ospathbasename_noaspectTime: ✅ 437.655µs (SLO: <700.000µs 📉 -37.5%) vs baseline: +0.2% Memory: ✅ 43.959MB (SLO: <46.000MB -4.4%) vs baseline: +4.9% ✅ ospathjoin_aspectTime: ✅ 630.421µs (SLO: <700.000µs -9.9%) vs baseline: +0.3% Memory: ✅ 43.923MB (SLO: <46.000MB -4.5%) vs baseline: +5.0% ✅ ospathjoin_noaspectTime: ✅ 647.267µs (SLO: <700.000µs -7.5%) vs baseline: ~same Memory: ✅ 43.820MB (SLO: <46.000MB -4.7%) vs baseline: +4.8% ✅ ospathnormcase_aspectTime: ✅ 356.075µs (SLO: <700.000µs 📉 -49.1%) vs baseline: -0.4% Memory: ✅ 43.797MB (SLO: <46.000MB -4.8%) vs baseline: +4.7% ✅ ospathnormcase_noaspectTime: ✅ 367.768µs (SLO: <700.000µs 📉 -47.5%) vs baseline: +0.4% Memory: ✅ 43.881MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ ospathsplit_aspectTime: ✅ 491.297µs (SLO: <700.000µs 📉 -29.8%) vs baseline: +0.5% Memory: ✅ 43.937MB (SLO: <46.000MB -4.5%) vs baseline: +5.0% ✅ ospathsplit_noaspectTime: ✅ 505.212µs (SLO: <700.000µs 📉 -27.8%) vs baseline: +0.5% Memory: ✅ 43.770MB (SLO: <46.000MB -4.8%) vs baseline: +4.8% ✅ ospathsplitdrive_aspectTime: ✅ 373.512µs (SLO: <700.000µs 📉 -46.6%) vs baseline: -1.6% Memory: ✅ 43.965MB (SLO: <46.000MB -4.4%) vs baseline: +5.1% ✅ ospathsplitdrive_noaspectTime: ✅ 72.579µs (SLO: <700.000µs 📉 -89.6%) vs baseline: +0.2% Memory: ✅ 43.816MB (SLO: <46.000MB -4.7%) vs baseline: +4.8% ✅ ospathsplitext_aspectTime: ✅ 463.227µs (SLO: <700.000µs 📉 -33.8%) vs baseline: +0.9% Memory: ✅ 43.915MB (SLO: <46.000MB -4.5%) vs baseline: +5.0% ✅ ospathsplitext_noaspectTime: ✅ 468.618µs (SLO: <700.000µs 📉 -33.1%) vs baseline: -1.0% Memory: ✅ 43.869MB (SLO: <46.000MB -4.6%) vs baseline: +4.8% 🟡 Near SLO Breach (5 suites)🟡 djangosimple - 30/30✅ appsecTime: ✅ 19.875ms (SLO: <22.300ms 📉 -10.9%) vs baseline: +0.4% Memory: ✅ 69.343MB (SLO: <73.500MB -5.7%) vs baseline: +4.8% ✅ exception-replay-enabledTime: ✅ 1.368ms (SLO: <1.450ms -5.7%) vs baseline: ~same Memory: ✅ 67.653MB (SLO: <71.500MB -5.4%) vs baseline: +4.9% ✅ iastTime: ✅ 19.880ms (SLO: <22.250ms 📉 -10.7%) vs baseline: -0.4% Memory: ✅ 69.419MB (SLO: <75.000MB -7.4%) vs baseline: +5.1% ✅ profilerTime: ✅ 15.153ms (SLO: <16.550ms -8.4%) vs baseline: +0.2% Memory: ✅ 60.197MB (SLO: <61.000MB 🟡 -1.3%) vs baseline: +5.2% ✅ resource-renamingTime: ✅ 19.973ms (SLO: <21.750ms -8.2%) vs baseline: +0.5% Memory: ✅ 69.268MB (SLO: <73.500MB -5.8%) vs baseline: +4.9% ✅ span-code-originTime: ✅ 20.383ms (SLO: <28.200ms 📉 -27.7%) vs baseline: +0.9% Memory: ✅ 69.353MB (SLO: <75.000MB -7.5%) vs baseline: +4.8% ✅ tracerTime: ✅ 19.897ms (SLO: <21.750ms -8.5%) vs baseline: +0.3% Memory: ✅ 69.442MB (SLO: <75.000MB -7.4%) vs baseline: +5.0% ✅ tracer-and-profilerTime: ✅ 21.240ms (SLO: <23.500ms -9.6%) vs baseline: +0.1% Memory: ✅ 71.329MB (SLO: <75.000MB -4.9%) vs baseline: +4.8% ✅ tracer-dont-create-db-spansTime: ✅ 19.981ms (SLO: <21.500ms -7.1%) vs baseline: ~same Memory: ✅ 69.403MB (SLO: <75.000MB -7.5%) vs baseline: +5.0% ✅ tracer-minimalTime: ✅ 16.921ms (SLO: <17.500ms -3.3%) vs baseline: ~same Memory: ✅ 69.334MB (SLO: <75.000MB -7.6%) vs baseline: +4.8% ✅ tracer-nativeTime: ✅ 19.905ms (SLO: <21.750ms -8.5%) vs baseline: +1.1% Memory: ✅ 69.315MB (SLO: <72.500MB -4.4%) vs baseline: +4.8% ✅ tracer-no-cachesTime: ✅ 17.715ms (SLO: <19.650ms -9.8%) vs baseline: -0.8% Memory: ✅ 69.333MB (SLO: <75.000MB -7.6%) vs baseline: +4.8% ✅ tracer-no-databasesTime: ✅ 19.559ms (SLO: <20.100ms -2.7%) vs baseline: ~same Memory: ✅ 69.363MB (SLO: <75.000MB -7.5%) vs baseline: +5.0% ✅ tracer-no-middlewareTime: ✅ 19.531ms (SLO: <21.500ms -9.2%) vs baseline: -0.5% Memory: ✅ 69.393MB (SLO: <75.000MB -7.5%) vs baseline: +4.9% ✅ tracer-no-templatesTime: ✅ 19.965ms (SLO: <22.000ms -9.2%) vs baseline: +0.9% Memory: ✅ 69.385MB (SLO: <73.500MB -5.6%) vs baseline: +4.8% 🟡 otelspan - 22/22✅ add-eventTime: ✅ 40.608ms (SLO: <47.150ms 📉 -13.9%) vs baseline: -0.6% Memory: ✅ 41.185MB (SLO: <47.000MB 📉 -12.4%) vs baseline: +5.0% ✅ add-metricsTime: ✅ 235.052ms (SLO: <344.800ms 📉 -31.8%) vs baseline: -0.2% Memory: ✅ 45.653MB (SLO: <47.500MB -3.9%) vs baseline: +4.7% ✅ add-tagsTime: ✅ 276.324ms (SLO: <330.000ms 📉 -16.3%) vs baseline: -0.1% Memory: ✅ 45.593MB (SLO: <47.500MB -4.0%) vs baseline: +4.6% ✅ get-contextTime: ✅ 83.637ms (SLO: <92.350ms -9.4%) vs baseline: -0.1% Memory: ✅ 41.465MB (SLO: <46.500MB 📉 -10.8%) vs baseline: +5.1% ✅ is-recordingTime: ✅ 39.271ms (SLO: <44.500ms 📉 -11.8%) vs baseline: +0.4% Memory: ✅ 41.167MB (SLO: <47.500MB 📉 -13.3%) vs baseline: +4.6% ✅ record-exceptionTime: ✅ 60.912ms (SLO: <67.650ms -10.0%) vs baseline: -0.4% Memory: ✅ 41.710MB (SLO: <47.000MB 📉 -11.3%) vs baseline: +4.8% ✅ set-statusTime: ✅ 45.282ms (SLO: <50.400ms 📉 -10.2%) vs baseline: +0.7% Memory: ✅ 41.211MB (SLO: <47.000MB 📉 -12.3%) vs baseline: +5.3% ✅ startTime: ✅ 40.061ms (SLO: <44.500ms -10.0%) vs baseline: +3.3% Memory: ✅ 41.126MB (SLO: <47.000MB 📉 -12.5%) vs baseline: +4.8% ✅ start-finishTime: ✅ 90.299ms (SLO: <91.000ms 🟡 -0.8%) vs baseline: +0.2% Memory: ✅ 38.692MB (SLO: <46.500MB 📉 -16.8%) vs baseline: +4.5% ✅ start-finish-telemetryTime: ✅ 91.789ms (SLO: <92.000ms 🟡 -0.2%) vs baseline: +0.2% Memory: ✅ 38.712MB (SLO: <46.500MB 📉 -16.7%) vs baseline: +5.0% ✅ update-nameTime: ✅ 40.225ms (SLO: <45.150ms 📉 -10.9%) vs baseline: +0.2% Memory: ✅ 41.327MB (SLO: <47.000MB 📉 -12.1%) vs baseline: +5.2% 🟡 recursivecomputation - 8/8✅ deepTime: ✅ 312.144ms (SLO: <320.950ms -2.7%) vs baseline: -0.4% Memory: ✅ 37.336MB (SLO: <38.750MB -3.6%) vs baseline: +4.7% ✅ deep-profiledTime: ✅ 328.086ms (SLO: <359.150ms -8.6%) vs baseline: -0.1% Memory: ✅ 43.726MB (SLO: <46.000MB -4.9%) vs baseline: +5.0% ✅ mediumTime: ✅ 7.399ms (SLO: <7.400ms 🟡 ~same) vs baseline: -0.7% Memory: ✅ 36.215MB (SLO: <38.000MB -4.7%) vs baseline: +4.9% ✅ shallowTime: ✅ 1.048ms (SLO: <1.050ms 🟡 -0.2%) vs baseline: +2.0% Memory: ✅ 36.235MB (SLO: <38.000MB -4.6%) vs baseline: +5.0% 🟡 span - 26/26✅ add-eventTime: ✅ 19.587ms (SLO: <22.500ms 📉 -12.9%) vs baseline: +0.3% Memory: ✅ 38.454MB (SLO: <53.000MB 📉 -27.4%) vs baseline: +5.0% ✅ add-metricsTime: ✅ 89.190ms (SLO: <93.500ms -4.6%) vs baseline: +0.2% Memory: ✅ 42.870MB (SLO: <53.000MB 📉 -19.1%) vs baseline: +4.7% ✅ add-tagsTime: ✅ 149.457ms (SLO: <155.000ms -3.6%) vs baseline: +0.7% Memory: ✅ 42.930MB (SLO: <53.000MB 📉 -19.0%) vs baseline: +4.9% ✅ get-contextTime: ✅ 18.762ms (SLO: <20.500ms -8.5%) vs baseline: ~same Memory: ✅ 38.381MB (SLO: <53.000MB 📉 -27.6%) vs baseline: +4.9% ✅ is-recordingTime: ✅ 18.923ms (SLO: <20.500ms -7.7%) vs baseline: +0.4% Memory: ✅ 38.322MB (SLO: <53.000MB 📉 -27.7%) vs baseline: +4.6% ✅ record-exceptionTime: ✅ 38.531ms (SLO: <41.000ms -6.0%) vs baseline: +0.5% Memory: ✅ 38.910MB (SLO: <53.000MB 📉 -26.6%) vs baseline: +5.2% ✅ set-statusTime: ✅ 20.685ms (SLO: <22.000ms -6.0%) vs baseline: +0.3% Memory: ✅ 38.394MB (SLO: <53.000MB 📉 -27.6%) vs baseline: +5.1% ✅ startTime: ✅ 19.673ms (SLO: <20.500ms -4.0%) vs baseline: +5.4% Memory: ✅ 38.364MB (SLO: <53.000MB 📉 -27.6%) vs baseline: +5.1% ✅ start-finishTime: ✅ 58.377ms (SLO: <58.500ms 🟡 -0.2%) vs baseline: +0.2% Memory: ✅ 36.215MB (SLO: <38.000MB -4.7%) vs baseline: +4.9% ✅ start-finish-telemetryTime: ✅ 59.575ms (SLO: <60.000ms 🟡 -0.7%) vs baseline: -0.2% Memory: ✅ 36.196MB (SLO: <38.000MB -4.7%) vs baseline: +4.7% ✅ start-finish-traceid128Time: ✅ 60.792ms (SLO: <62.000ms 🟡 -1.9%) vs baseline: +0.2% Memory: ✅ 36.196MB (SLO: <38.000MB -4.7%) vs baseline: +5.1% ✅ start-traceid128Time: ✅ 18.775ms (SLO: <22.500ms 📉 -16.6%) vs baseline: +0.4% Memory: ✅ 38.292MB (SLO: <53.000MB 📉 -27.8%) vs baseline: +4.4% ✅ update-nameTime: ✅ 19.381ms (SLO: <22.000ms 📉 -11.9%) vs baseline: +0.3% Memory: ✅ 38.443MB (SLO: <53.000MB 📉 -27.5%) vs baseline: +5.0% 🟡 tracer - 6/6✅ largeTime: ✅ 32.999ms (SLO: <32.950ms +0.2%) vs baseline: ~same Memory: ✅ 37.768MB (SLO: <39.250MB -3.8%) vs baseline: +4.8% ✅ mediumTime: ✅ 3.320ms (SLO: <3.500ms -5.1%) vs baseline: +0.6% Memory: ✅ 36.255MB (SLO: <38.750MB -6.4%) vs baseline: +4.9% ✅ smallTime: ✅ 384.752µs (SLO: <390.000µs 🟡 -1.3%) vs baseline: +3.8% Memory: ✅ 36.255MB (SLO: <38.750MB -6.4%) vs baseline: +4.9%
|
Codeowners resolved as |
|
@codex review this, make sure you pay extra attention to how locking and their allocations work around forks! |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d082021d3e
ℹ️ 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".
|
@codex review again |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 151527e6e2
ℹ️ 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".
|
@codex review again! |
|
Codex Review: Didn't find any major issues. Chef's kiss. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
https://datadoghq.atlassian.net/browse/PROF-13112 This fixes a rare segmentation fault that could occur when a profiled application forks. ``` ``` The root cause of this crash seems to be unfortunate timing on fork. What happened was that, due to ordering of fork handlers, `stack`'s post-fork hook would run _before_ `dd_wrapper`'s. On multi-core systems where we got unlucky, because `stack`'s post-fork hook would restart the Sampling Thread, this meant the Sampling Thread could start before `dd_wrapper`'s post-fork hook had completed (or even before it had started). As a result, `dd_wrapper` would (try to) reset the `Profile` object that the Sampling Thread was writing to through the `Sample` APIs, resulting in a race and all kinds of fun memory issues, such as this crash. Note that the other way around could also happen, where the Sampling Thread could try to write to the `Profile` object that had already been dropped/freed by `dd_wrapper`. AFAIK, other Profilers shouldn't be impacted as they run in the Main Thread, so I think the risk that they may be writing to the Profile before it's ready post-fork is effectively inexistent. As far as I can tell, there is no risk in registering that post-fork hook at library load time, instead of when the Stack Profiler is started. What `stack_atfork_child` is calling `stack_postfork_cleanup`, which we already did at library load time [meaning it's safe to do even when the Profiler doesn't run], then calling `Sampler::restart_after_fork`, which only restarts the Profiler if it was running pre-fork (which in an app that does not use the Profiler is a no-op). Co-authored-by: thomas.kowalski <thomas.kowalski@datadoghq.com>
3720018 to
1abb880
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. You're on a roll. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1abb880dbf
ℹ️ 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".
|
@codex review |
1abb880 to
cb9159b
Compare
|
Codex Review: Didn't find any major issues. Nice work! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
r1viollet
left a comment
There was a problem hiding this comment.
Lgtm
this looks strictly better, though overall difficult to reason about
…17418) ## Description This reverts commit 10f1503 / #17417 and reapplies #17183. See original PR for more info and context. On top of the previous PR, it adds fork handlers so that we lock `profile_mtx` pre-fork and unlock it post-fork (after making sure the `ProfilerState` is in a clean state). Doing this allows to avoid cases where the Sampling Thread would try to use corrupt/inconsistent `ProfilerState` data post-fork. Co-authored-by: thomas.kowalski <thomas.kowalski@datadoghq.com>
…17418) ## Description This reverts commit 10f1503 / #17417 and reapplies #17183. See original PR for more info and context. On top of the previous PR, it adds fork handlers so that we lock `profile_mtx` pre-fork and unlock it post-fork (after making sure the `ProfilerState` is in a clean state). Doing this allows to avoid cases where the Sampling Thread would try to use corrupt/inconsistent `ProfilerState` data post-fork. Co-authored-by: thomas.kowalski <thomas.kowalski@datadoghq.com>
Description
This reverts commit 10f1503 / #17417 and reapplies #17183. See original PR for more info and context.
On top of the previous PR, it adds fork handlers so that we lock
profile_mtxpre-fork and unlock it post-fork (after making sure theProfilerStateis in a clean state). Doing this allows to avoid cases where the Sampling Thread would try to use corrupt/inconsistentProfilerStatedata post-fork.