Skip to content

fix(crashtracking): use libunwind to unwind frames#1663

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 3 commits intomainfrom
gyuheon0h/PROF-13672-libunwind
Mar 9, 2026
Merged

fix(crashtracking): use libunwind to unwind frames#1663
gh-worker-dd-mergequeue-cf854d[bot] merged 3 commits intomainfrom
gyuheon0h/PROF-13672-libunwind

Conversation

@gyuheon0h
Copy link
Copy Markdown
Contributor

@gyuheon0h gyuheon0h commented Mar 5, 2026

What does this PR do?

Use packaged libunwind to unwind crash stacktrace.

The diff is bigger than the actual change, because I moved some of the emitter functions around so that the file structure is

helper structs
main emit func (`emit_crashreport`)
... all the helper emitters ...

I also added unsafe comments to unsafe calls

Motivation

Crashtracker collects callstacks. When it comes to alpine/musl-libc (mainly on x86_64), we fail at retrieving the callstack passed the signal frame. The problem is that the musl-libc binary does not have the CFIs (unwinding information) and the unwinder does not know how to move forward and stop.

Libunwind provides a way to unwind starting from the ucontext: context (registers and state) of the crashing thread. Going that way, we can collect the callstack as much as possible (until hitting musl-libc). We previously packaged libunwind as a libdatadog crate here: feat(profiling): Wrap libunwind in a crate

Lets use this to unwind from crash ucontext

Additional Notes

Anything else we should know when reviewing?

How to test the change?

Describe here in detail how the change can be validated.

Copy link
Copy Markdown
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@gyuheon0h gyuheon0h force-pushed the gyuheon0h/PROF-13672-libunwind branch from db27cac to 12d5692 Compare March 5, 2026 16:48
@gyuheon0h gyuheon0h changed the title libunwind [dont review; WIP] libunwind Mar 5, 2026
@gyuheon0h gyuheon0h force-pushed the gyuheon0h/PROF-13672-libunwind branch from 12d5692 to b3edc83 Compare March 5, 2026 17:20
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 5, 2026

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/gyuheon0h/PROF-13672-libunwind

Summary by Rule

Rule Base Branch PR Branch Change
unwrap_used 12 0 ✅ -12 (-100.0%)
Total 12 0 ✅ -12 (-100.0%)

Annotation Counts by File

File Base Branch PR Branch Change
libdd-crashtracker/src/collector/emitters.rs 12 0 ✅ -12 (-100.0%)

Annotation Stats by Crate

Crate Base Branch PR Branch Change
clippy-annotation-reporter 5 5 No change (0%)
datadog-ffe-ffi 1 1 No change (0%)
datadog-ipc 28 27 ✅ -1 (-3.6%)
datadog-live-debugger 6 6 No change (0%)
datadog-live-debugger-ffi 10 10 No change (0%)
datadog-profiling-replayer 4 4 No change (0%)
datadog-remote-config 3 3 No change (0%)
datadog-sidecar 59 59 No change (0%)
libdd-common 10 10 No change (0%)
libdd-common-ffi 12 12 No change (0%)
libdd-crashtracker 12 0 ✅ -12 (-100.0%)
libdd-data-pipeline 5 5 No change (0%)
libdd-ddsketch 2 2 No change (0%)
libdd-dogstatsd-client 1 1 No change (0%)
libdd-profiling 13 13 No change (0%)
libdd-telemetry 19 19 No change (0%)
libdd-tinybytes 4 4 No change (0%)
libdd-trace-normalization 2 2 No change (0%)
libdd-trace-obfuscation 9 9 No change (0%)
libdd-trace-utils 15 15 No change (0%)
Total 220 207 ✅ -13 (-5.9%)

About This Report

This report tracks Clippy allow annotations for specific rules, showing how they've changed in this PR. Decreasing the number of these annotations generally improves code quality.

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Mar 5, 2026

Codecov Report

❌ Patch coverage is 31.25000% with 77 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.08%. Comparing base (0f3d46b) to head (30a1416).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1663      +/-   ##
==========================================
- Coverage   71.19%   71.08%   -0.12%     
==========================================
  Files         427      427              
  Lines       62852    62920      +68     
==========================================
- Hits        44746    44725      -21     
- Misses      18106    18195      +89     
Components Coverage Δ
libdd-crashtracker 62.37% <31.25%> (-0.57%) ⬇️
libdd-crashtracker-ffi 17.49% <ø> (+0.92%) ⬆️
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 88.02% <ø> (ø)
libdd-data-pipeline-ffi 75.72% <ø> (ø)
libdd-common 79.73% <ø> (ø)
libdd-common-ffi 73.40% <ø> (ø)
libdd-telemetry 62.48% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 80.35% <ø> (-0.51%) ⬇️
libdd-profiling 81.60% <ø> (ø)
libdd-profiling-ffi 63.65% <ø> (ø)
datadog-sidecar 32.47% <ø> (+0.47%) ⬆️
datdog-sidecar-ffi 7.73% <ø> (+1.30%) ⬆️
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 94.69% <ø> (ø)
libdd-trace-protobuf 68.25% <ø> (+0.25%) ⬆️
libdd-trace-utils 89.08% <ø> (+<0.01%) ⬆️
datadog-tracer-flare 88.95% <ø> (ø)
libdd-log 74.69% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@dd-octo-sts
Copy link
Copy Markdown
Contributor

dd-octo-sts bot commented Mar 5, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.70 MB 8.63 MB --.71% (-64.02 KB) 💪
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 98.65 MB 100.06 MB +1.42% (+1.40 MB) ⚠️
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 114.29 MB 116.71 MB +2.11% (+2.41 MB) ⚠️
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.29 MB 11.20 MB --.75% (-87.43 KB) 💪
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.16 MB 27.16 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 76.26 KB 76.26 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 186.04 MB 186.01 MB --.01% (-24.00 KB) 💪
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 917.19 MB 917.17 MB -0% (-22.09 KB) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.93 MB 9.93 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 76.26 KB 76.26 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 24.76 MB 24.76 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 51.43 MB 51.43 MB +0% (+148 B) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 22.97 MB 22.97 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 77.44 KB 77.44 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 190.23 MB 190.24 MB +0% (+8.00 KB) 👌
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 900.84 MB 900.82 MB -0% (-20.73 KB) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.53 MB 7.53 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 77.44 KB 77.44 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.52 MB 26.52 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 47.06 MB 47.06 MB +0% (+150 B) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 86.54 MB 87.28 MB +.85% (+758.55 KB) 🔍
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.23 MB 10.19 MB --.38% (-40.02 KB) 💪
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 107.16 MB 109.60 MB +2.27% (+2.44 MB) ⚠️
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.98 MB 11.92 MB --.50% (-62.46 KB) 💪

@gyuheon0h gyuheon0h changed the title [dont review; WIP] libunwind feat(crashtracking): use libunwind to unwind frames Mar 5, 2026
@gyuheon0h gyuheon0h force-pushed the gyuheon0h/PROF-13672-libunwind branch 2 times, most recently from 507c974 to 1ac9cb5 Compare March 5, 2026 19:23
@datadog-datadog-prod-us1
Copy link
Copy Markdown
Contributor

datadog-datadog-prod-us1 bot commented Mar 5, 2026

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 30a1416 | Docs | Datadog PR Page | Was this helpful? React with 👍/👎 or give us feedback!

@gyuheon0h gyuheon0h force-pushed the gyuheon0h/PROF-13672-libunwind branch 3 times, most recently from 1dfb73b to 3aa8cd5 Compare March 5, 2026 21:32
@gyuheon0h gyuheon0h force-pushed the gyuheon0h/PROF-13672-libunwind branch 9 times, most recently from 7a8c08e to 2017c16 Compare March 5, 2026 22:26
@gyuheon0h gyuheon0h changed the title feat(crashtracking): use libunwind to unwind frames fix(crashtracking): use libunwind to unwind frames Mar 5, 2026
@pr-commenter
Copy link
Copy Markdown

pr-commenter bot commented Mar 5, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-03-25 19:53:07

Comparing candidate commit 30a1416 in PR branch gyuheon0h/PROF-13672-libunwind with baseline commit b1d5bcf in branch main.

Found 7 performance improvements and 16 performance regressions! Performance is the same for 36 metrics, 1 unstable metrics.

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

scenario:concentrator/add_spans_to_concentrator

  • 🟩 execution_time [-2.707ms; -2.701ms] or [-20.261%; -20.217%]

scenario:credit_card/is_card_number/ 378282246310005

  • 🟥 execution_time [+4.919µs; +5.015µs] or [+7.241%; +7.382%]
  • 🟥 throughput [-1011706.721op/s; -993598.472op/s] or [-6.873%; -6.750%]

scenario:credit_card/is_card_number/378282246310005

  • 🟥 execution_time [+4.831µs; +4.928µs] or [+7.442%; +7.592%]
  • 🟥 throughput [-1086708.723op/s; -1066744.264op/s] or [-7.054%; -6.924%]

scenario:credit_card/is_card_number/37828224631000521389798

  • 🟥 execution_time [+6.547µs; +6.569µs] or [+14.332%; +14.381%]
  • 🟥 throughput [-2753602.065op/s; -2743336.234op/s] or [-12.578%; -12.531%]

scenario:credit_card/is_card_number/x371413321323331

  • 🟩 execution_time [-802.446ns; -799.888ns] or [-11.737%; -11.699%]
  • 🟩 throughput [+19380740.605op/s; +19448182.417op/s] or [+13.251%; +13.297%]

scenario:credit_card/is_card_number_no_luhn/ 378282246310005

  • 🟥 execution_time [+4.636µs; +4.676µs] or [+8.679%; +8.753%]
  • 🟥 throughput [-1506637.786op/s; -1494834.546op/s] or [-8.048%; -7.985%]

scenario:credit_card/is_card_number_no_luhn/378282246310005

  • 🟥 execution_time [+4.697µs; +4.776µs] or [+9.350%; +9.507%]
  • 🟥 throughput [-1727661.055op/s; -1701659.050op/s] or [-8.679%; -8.548%]

scenario:credit_card/is_card_number_no_luhn/37828224631000521389798

  • 🟥 execution_time [+6.530µs; +6.553µs] or [+14.296%; +14.346%]
  • 🟥 throughput [-2747648.726op/s; -2737062.770op/s] or [-12.551%; -12.503%]

scenario:credit_card/is_card_number_no_luhn/x371413321323331

  • 🟩 execution_time [-800.026ns; -796.956ns] or [-11.701%; -11.656%]
  • 🟩 throughput [+19298052.656op/s; +19379720.076op/s] or [+13.195%; +13.251%]

scenario:normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000...

  • 🟥 execution_time [+38.798µs; +39.141µs] or [+7.819%; +7.888%]
  • 🟥 throughput [-147381.169op/s; -146130.114op/s] or [-7.313%; -7.251%]

scenario:normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters

  • 🟥 execution_time [+22.096µs; +22.166µs] or [+13.137%; +13.179%]
  • 🟥 throughput [-692378.517op/s; -690231.316op/s] or [-11.646%; -11.610%]

scenario:sql/obfuscate_sql_string

  • 🟩 execution_time [-201.557µs; -201.416µs] or [-69.916%; -69.867%]

scenario:write only interface

  • 🟩 execution_time [-2.711µs; -2.314µs] or [-47.660%; -40.683%]

Candidate

Candidate benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sdk_test_data/rules-based execution_time 143.937µs 146.444µs ± 1.686µs 146.148µs ± 0.496µs 146.743µs 148.224µs 152.901µs 162.401µs 11.12% 5.612 43.922 1.15% 0.119µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sdk_test_data/rules-based execution_time [146.210µs; 146.678µs] or [-0.160%; +0.160%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time 534.278µs 535.155µs ± 0.999µs 534.984µs ± 0.250µs 535.292µs 535.880µs 538.029µs 546.628µs 2.18% 8.254 87.287 0.19% 0.071µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1829398.083op/s 1868624.940op/s ± 3435.710op/s 1869216.424op/s ± 872.868op/s 1869904.733op/s 1870872.347op/s 1871286.083op/s 1871683.336op/s 0.13% -8.137 85.318 0.18% 242.941op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 381.309µs 382.092µs ± 0.414µs 382.042µs ± 0.205µs 382.271µs 382.580µs 383.013µs 385.214µs 0.83% 3.782 25.355 0.11% 0.029µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2595957.011op/s 2617171.722op/s ± 2825.662op/s 2617513.407op/s ± 1403.351op/s 2618712.351op/s 2620397.227op/s 2621054.027op/s 2622546.764op/s 0.19% -3.740 24.963 0.11% 199.804op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 189.754µs 190.330µs ± 0.206µs 190.342µs ± 0.133µs 190.468µs 190.661µs 190.823µs 190.929µs 0.31% -0.047 0.055 0.11% 0.015µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5237537.782op/s 5254046.431op/s ± 5695.531op/s 5253695.925op/s ± 3669.644op/s 5257577.129op/s 5263207.757op/s 5267063.839op/s 5269974.012op/s 0.31% 0.054 0.054 0.11% 402.735op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 37.489µs 37.626µs ± 0.055µs 37.623µs ± 0.037µs 37.664µs 37.712µs 37.769µs 37.788µs 0.44% 0.069 0.032 0.15% 0.004µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26463394.195op/s 26577618.146op/s ± 39094.576op/s 26579410.260op/s ± 26084.309op/s 26602277.573op/s 26645078.866op/s 26663887.762op/s 26674702.950op/s 0.36% -0.060 0.027 0.15% 2764.404op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.803µs 45.908µs ± 0.057µs 45.898µs ± 0.035µs 45.943µs 46.023µs 46.072µs 46.134µs 0.51% 1.019 1.084 0.12% 0.004µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21676180.503op/s 21782521.563op/s ± 26842.152op/s 21787476.002op/s ± 16392.918op/s 21802189.582op/s 21813875.364op/s 21827523.739op/s 21832705.198op/s 0.21% -1.012 1.061 0.12% 1898.027op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time [535.016µs; 535.293µs] or [-0.026%; +0.026%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1868148.784op/s; 1869101.097op/s] or [-0.025%; +0.025%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [382.035µs; 382.150µs] or [-0.015%; +0.015%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2616780.113op/s; 2617563.332op/s] or [-0.015%; +0.015%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [190.301µs; 190.358µs] or [-0.015%; +0.015%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5253257.085op/s; 5254835.777op/s] or [-0.015%; +0.015%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.618µs; 37.633µs] or [-0.020%; +0.020%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26572200.014op/s; 26583036.278op/s] or [-0.020%; +0.020%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [45.901µs; 45.916µs] or [-0.017%; +0.017%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21778801.498op/s; 21786241.627op/s] or [-0.017%; +0.017%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching string interning on wordpress profile execution_time 161.020µs 162.063µs ± 0.375µs 162.033µs ± 0.145µs 162.172µs 162.437µs 162.904µs 165.936µs 2.41% 5.717 56.059 0.23% 0.027µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching string interning on wordpress profile execution_time [162.011µs; 162.115µs] or [-0.032%; +0.032%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
receiver_entry_point/report/2598 execution_time 3.585ms 3.624ms ± 0.023ms 3.617ms ± 0.013ms 3.637ms 3.670ms 3.686ms 3.727ms 3.04% 1.132 1.484 0.65% 0.002ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2598 execution_time [3.621ms; 3.627ms] or [-0.090%; +0.090%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sql/obfuscate_sql_string execution_time 86.475µs 86.798µs ± 0.137µs 86.793µs ± 0.057µs 86.840µs 86.934µs 87.301µs 87.953µs 1.34% 3.710 26.490 0.16% 0.010µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sql/obfuscate_sql_string execution_time [86.779µs; 86.817µs] or [-0.022%; +0.022%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
concentrator/add_spans_to_concentrator execution_time 10.631ms 10.657ms ± 0.015ms 10.655ms ± 0.008ms 10.664ms 10.680ms 10.708ms 10.731ms 0.72% 1.427 4.029 0.14% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [10.655ms; 10.659ms] or [-0.019%; +0.019%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
single_flag_killswitch/rules-based execution_time 188.259ns 190.571ns ± 1.765ns 190.388ns ± 1.311ns 191.528ns 194.132ns 195.471ns 198.024ns 4.01% 1.028 1.082 0.92% 0.125ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
single_flag_killswitch/rules-based execution_time [190.326ns; 190.815ns] or [-0.128%; +0.128%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample2_frames_x1000 execution_time 716.222µs 717.653µs ± 0.618µs 717.609µs ± 0.413µs 718.015µs 718.815µs 719.417µs 719.494µs 0.26% 0.465 0.167 0.09% 0.044µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample2_frames_x1000 execution_time [717.568µs; 717.739µs] or [-0.012%; +0.012%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
ip_address/quantize_peer_ip_address_benchmark execution_time 4.916µs 5.009µs ± 0.063µs 4.989µs ± 0.043µs 5.041µs 5.142µs 5.145µs 5.145µs 3.13% 0.863 -0.260 1.26% 0.004µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
ip_address/quantize_peer_ip_address_benchmark execution_time [5.000µs; 5.018µs] or [-0.175%; +0.175%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_frames_x1000 execution_time 4.129ms 4.133ms ± 0.007ms 4.132ms ± 0.001ms 4.134ms 4.137ms 4.143ms 4.223ms 2.19% 11.247 143.292 0.17% 0.000ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_frames_x1000 execution_time [4.132ms; 4.134ms] or [-0.023%; +0.023%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
redis/obfuscate_redis_string execution_time 34.120µs 34.601µs ± 0.612µs 34.264µs ± 0.113µs 35.050µs 35.831µs 36.044µs 37.598µs 9.73% 1.487 2.035 1.76% 0.043µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
redis/obfuscate_redis_string execution_time [34.517µs; 34.686µs] or [-0.245%; +0.245%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
credit_card/is_card_number/ execution_time 3.896µs 3.914µs ± 0.003µs 3.914µs ± 0.002µs 3.916µs 3.918µs 3.920µs 3.924µs 0.25% -0.925 5.678 0.08% 0.000µs 1 200
credit_card/is_card_number/ throughput 254852593.798op/s 255501181.308op/s ± 197257.586op/s 255495374.646op/s ± 132045.379op/s 255640947.289op/s 255773754.849op/s 255853890.229op/s 256701557.725op/s 0.47% 0.941 5.772 0.08% 13948.218op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 79.048µs 79.733µs ± 0.427µs 79.646µs ± 0.257µs 79.929µs 80.629µs 81.013µs 81.052µs 1.77% 0.897 0.513 0.53% 0.030µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12337702.904op/s 12542196.718op/s ± 66823.676op/s 12555521.438op/s ± 40721.733op/s 12593902.033op/s 12628838.838op/s 12640885.469op/s 12650597.329op/s 0.76% -0.869 0.450 0.53% 4725.147op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 72.301µs 72.904µs ± 0.339µs 72.864µs ± 0.221µs 73.094µs 73.495µs 73.909µs 73.989µs 1.54% 0.700 0.271 0.46% 0.024µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13515468.307op/s 13716990.385op/s ± 63501.337op/s 13724114.567op/s ± 41594.056op/s 13765171.707op/s 13807781.586op/s 13825624.443op/s 13831142.200op/s 0.78% -0.676 0.218 0.46% 4490.223op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.895µs 3.913µs ± 0.003µs 3.913µs ± 0.001µs 3.914µs 3.917µs 3.920µs 3.922µs 0.22% -0.950 9.367 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254990725.161op/s 255554022.820op/s ± 175534.223op/s 255563850.494op/s ± 92761.203op/s 255653770.383op/s 255770037.207op/s 255815829.013op/s 256735541.299op/s 0.46% 0.971 9.511 0.07% 12412.144op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 69.118µs 69.790µs ± 0.347µs 69.776µs ± 0.226µs 69.987µs 70.425µs 70.729µs 70.954µs 1.69% 0.557 0.088 0.50% 0.025µs 1 200
credit_card/is_card_number/378282246310005 throughput 14093567.784op/s 14328957.574op/s ± 71112.176op/s 14331569.622op/s ± 46328.663op/s 14385526.413op/s 14430669.937op/s 14441304.378op/s 14468111.529op/s 0.95% -0.531 0.036 0.50% 5028.390op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 52.159µs 52.236µs ± 0.038µs 52.234µs ± 0.028µs 52.263µs 52.297µs 52.325µs 52.385µs 0.29% 0.399 0.247 0.07% 0.003µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 19089471.957op/s 19143821.657op/s ± 13999.498op/s 19144477.188op/s ± 10230.854op/s 19154512.343op/s 19165627.025op/s 19170412.213op/s 19172024.182op/s 0.14% -0.394 0.237 0.07% 989.914op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.028µs 6.036µs ± 0.008µs 6.034µs ± 0.002µs 6.036µs 6.041µs 6.078µs 6.115µs 1.33% 6.307 47.022 0.14% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 163541190.864op/s 165677312.276op/s ± 230153.618op/s 165717242.880op/s ± 50746.862op/s 165763445.959op/s 165806934.697op/s 165849747.936op/s 165889146.805op/s 0.10% -6.268 46.477 0.14% 16274.318op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.896µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.916µs 3.918µs 3.918µs 0.16% -1.021 7.044 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255217811.328op/s 255612919.165op/s ± 166113.244op/s 255616372.264op/s ± 104425.837op/s 255721211.858op/s 255845632.283op/s 255888095.470op/s 256675753.752op/s 0.41% 1.037 7.150 0.06% 11745.980op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 64.217µs 64.492µs ± 0.136µs 64.469µs ± 0.079µs 64.564µs 64.752µs 64.855µs 64.878µs 0.64% 0.655 0.016 0.21% 0.010µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15413482.984op/s 15505871.265op/s ± 32658.684op/s 15511416.627op/s ± 18915.857op/s 15527107.219op/s 15551902.243op/s 15559351.276op/s 15572146.102op/s 0.39% -0.645 0.001 0.21% 2309.318op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 57.810µs 58.076µs ± 0.139µs 58.044µs ± 0.085µs 58.158µs 58.332µs 58.475µs 58.559µs 0.89% 0.806 0.486 0.24% 0.010µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 17076701.634op/s 17219025.286op/s ± 41208.295op/s 17228392.798op/s ± 25278.159op/s 17249479.724op/s 17272180.569op/s 17284020.787op/s 17298136.991op/s 0.40% -0.793 0.451 0.24% 2913.866op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.894µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.917µs 3.918µs 3.919µs 0.17% -1.102 7.782 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255180350.734op/s 255597274.579op/s ± 187298.252op/s 255604621.139op/s ± 135726.824op/s 255739358.289op/s 255833127.885op/s 255889726.628op/s 256829149.355op/s 0.48% 1.121 7.920 0.07% 13243.986op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 54.590µs 54.973µs ± 0.282µs 54.914µs ± 0.190µs 55.113µs 55.580µs 55.752µs 55.917µs 1.83% 1.034 0.676 0.51% 0.020µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 17883745.102op/s 18191290.347op/s ± 92876.499op/s 18210194.704op/s ± 63057.054op/s 18267932.589op/s 18298971.689op/s 18308425.507op/s 18318329.320op/s 0.59% -1.009 0.607 0.51% 6567.360op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 52.164µs 52.222µs ± 0.037µs 52.213µs ± 0.021µs 52.243µs 52.291µs 52.339µs 52.367µs 0.30% 1.130 1.355 0.07% 0.003µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 19095938.592op/s 19149080.151op/s ± 13569.152op/s 19152453.078op/s ± 7644.104op/s 19158357.872op/s 19165489.948op/s 19168144.633op/s 19170469.808op/s 0.09% -1.126 1.340 0.07% 959.484op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.028µs 6.039µs ± 0.010µs 6.036µs ± 0.003µs 6.039µs 6.071µs 6.075µs 6.082µs 0.76% 2.661 6.432 0.17% 0.001µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 164419190.698op/s 165593581.628op/s ± 281947.725op/s 165662380.170op/s ± 74617.524op/s 165736052.727op/s 165805002.994op/s 165857824.590op/s 165901243.478op/s 0.14% -2.654 6.403 0.17% 19936.715op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
credit_card/is_card_number/ execution_time [3.913µs; 3.914µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ throughput [255473843.304op/s; 255528519.312op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [79.674µs; 79.792µs] or [-0.074%; +0.074%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12532935.599op/s; 12551457.837op/s] or [-0.074%; +0.074%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [72.857µs; 72.951µs] or [-0.064%; +0.064%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13708189.711op/s; 13725791.060op/s] or [-0.064%; +0.064%] None None None
credit_card/is_card_number/37828224631 execution_time [3.913µs; 3.913µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631 throughput [255529695.465op/s; 255578350.175op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/378282246310005 execution_time [69.742µs; 69.839µs] or [-0.069%; +0.069%] None None None
credit_card/is_card_number/378282246310005 throughput [14319102.111op/s; 14338813.038op/s] or [-0.069%; +0.069%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [52.231µs; 52.241µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [19141881.461op/s; 19145761.853op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.035µs; 6.037µs] or [-0.019%; +0.019%] None None None
credit_card/is_card_number/x371413321323331 throughput [165645415.198op/s; 165709209.354op/s] or [-0.019%; +0.019%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.912µs; 3.913µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ throughput [255589897.467op/s; 255635940.863op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [64.473µs; 64.511µs] or [-0.029%; +0.029%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15501345.085op/s; 15510397.444op/s] or [-0.029%; +0.029%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [58.056µs; 58.095µs] or [-0.033%; +0.033%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [17213314.212op/s; 17224736.359op/s] or [-0.033%; +0.033%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.912µs; 3.913µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255571316.843op/s; 255623232.315op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [54.934µs; 55.012µs] or [-0.071%; +0.071%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [18178418.558op/s; 18204162.137op/s] or [-0.071%; +0.071%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [52.217µs; 52.227µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [19147199.597op/s; 19150960.705op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.037µs; 6.040µs] or [-0.024%; +0.024%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [165554506.385op/s; 165632656.871op/s] or [-0.024%; +0.024%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_trace/test_trace execution_time 239.790ns 251.794ns ± 13.453ns 244.553ns ± 3.223ns 260.495ns 282.070ns 284.084ns 287.992ns 17.76% 1.178 0.020 5.33% 0.951ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_trace/test_trace execution_time [249.929ns; 253.658ns] or [-0.740%; +0.740%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
tags/replace_trace_tags execution_time 2.341µs 2.391µs ± 0.014µs 2.391µs ± 0.004µs 2.394µs 2.418µs 2.426µs 2.432µs 1.71% -0.432 2.804 0.60% 0.001µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
tags/replace_trace_tags execution_time [2.389µs; 2.393µs] or [-0.084%; +0.084%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 18.321µs 26.565µs ± 10.167µs 18.499µs ± 0.127µs 35.589µs 44.834µs 50.343µs 71.537µs 286.71% 0.923 0.463 38.18% 0.719µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [25.156µs; 27.974µs] or [-5.304%; +5.304%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 1.165µs 3.176µs ± 1.432µs 3.004µs ± 0.020µs 3.024µs 3.345µs 13.802µs 15.152µs 404.39% 7.532 57.230 44.97% 0.101µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [2.978µs; 3.374µs] or [-6.247%; +6.247%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time 185.533µs 185.925µs ± 0.201µs 185.927µs ± 0.161µs 186.086µs 186.234µs 186.413µs 186.473µs 0.29% 0.211 -0.748 0.11% 0.014µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5362705.946op/s 5378509.708op/s ± 5817.076op/s 5378449.200op/s ± 4653.109op/s 5383154.971op/s 5387205.641op/s 5388284.404op/s 5389886.175op/s 0.21% -0.207 -0.752 0.11% 411.329op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.895µs 17.977µs ± 0.050µs 17.972µs ± 0.026µs 18.000µs 18.059µs 18.079µs 18.380µs 2.27% 2.735 19.066 0.28% 0.004µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 54405794.994op/s 55627481.714op/s ± 154814.723op/s 55642318.087op/s ± 79222.844op/s 55718529.670op/s 55840343.916op/s 55872183.379op/s 55882318.412op/s 0.43% -2.624 17.938 0.28% 10947.054op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.212µs 10.354µs ± 0.067µs 10.360µs ± 0.052µs 10.406µs 10.453µs 10.489µs 10.496µs 1.32% -0.087 -0.829 0.65% 0.005µs 1 200
normalization/normalize_name/normalize_name/good throughput 95270883.269op/s 96580764.645op/s ± 627850.744op/s 96528131.821op/s ± 481400.538op/s 97087985.620op/s 97665343.273op/s 97834791.620op/s 97927352.742op/s 1.45% 0.110 -0.827 0.65% 44395.752op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time [185.897µs; 185.953µs] or [-0.015%; +0.015%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5377703.517op/s; 5379315.899op/s] or [-0.015%; +0.015%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.970µs; 17.984µs] or [-0.039%; +0.039%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55606025.882op/s; 55648937.545op/s] or [-0.039%; +0.039%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.345µs; 10.364µs] or [-0.090%; +0.090%] None None None
normalization/normalize_name/normalize_name/good throughput [96493750.570op/s; 96667778.720op/s] or [-0.090%; +0.090%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching deserializing traces from msgpack to their internal representation execution_time 48.084ms 48.441ms ± 0.804ms 48.319ms ± 0.078ms 48.402ms 48.628ms 50.960ms 56.876ms 17.71% 8.341 76.120 1.66% 0.057ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching deserializing traces from msgpack to their internal representation execution_time [48.330ms; 48.553ms] or [-0.230%; +0.230%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 30a1416 1773062374 gyuheon0h/PROF-13672-libunwind
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching serializing traces from their internal representation to msgpack execution_time 13.994ms 14.062ms ± 0.033ms 14.059ms ± 0.016ms 14.075ms 14.101ms 14.194ms 14.280ms 1.57% 2.380 11.383 0.23% 0.002ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching serializing traces from their internal representation to msgpack execution_time [14.058ms; 14.067ms] or [-0.032%; +0.032%] None None None

Baseline

Omitted due to size.

@gyuheon0h gyuheon0h marked this pull request as ready for review March 6, 2026 05:16
@gyuheon0h gyuheon0h requested review from a team as code owners March 6, 2026 05:16
@gyuheon0h gyuheon0h force-pushed the gyuheon0h/PROF-13672-libunwind branch from fc419c4 to 30a1416 Compare March 9, 2026 13:19
@gh-worker-dd-mergequeue-cf854d gh-worker-dd-mergequeue-cf854d bot merged commit de888e2 into main Mar 9, 2026
118 checks passed
@gh-worker-dd-mergequeue-cf854d gh-worker-dd-mergequeue-cf854d bot deleted the gyuheon0h/PROF-13672-libunwind branch March 9, 2026 15:04
gh-worker-dd-mergequeue-cf854d bot pushed a commit that referenced this pull request Mar 11, 2026
# What does this PR do?

Bump to 29.0.0

[feat(profiling)!: add Tracepoint sample type](#1676)
[feat(obfuscation/redis): Reach feature parity on redis obfuscation [APMSP-2668]](#1632)
[fix(sidecar): Handle backpressure more gracefully](#1682)
[feat(trace-protobuf)!: Add two fields to ClientGroupedStats [SVLS-8627]](#1630)
[chore: exclude libdatadog from ADMS auto generated PRs for dependency updates](#1688)
[chore(ci): run crashtracking ffi example tests in CI](#1687)
[fix(crashtracking): use libunwind to unwind frames](#1663)
[feat: publish tracer metadata as OTel process ctx](#1658)
[ci: run thread count test in own process](#1693)
[feat(obfuscation/json): Init json obfuscation [APMSP-2665]](#1635)
[chore(ci): add final_status property on junit XML [APMSP-2610]](#1681)
[refactor(data-pipeline-ffi): move macro definitions for better reuse](#1699)
[fix(obfuscation/memcached): fuzzing fix](#1695)
[ci: replace use of cargo cross for centos7 tests](#1675)
#1702 (comment)
[feat(stats_exporter)!: add process tags to CSS payloads](#1709)

# Motivation

I mainly am creating this to use the new unwinding from ucontext for crashtracking

# Additional Notes

Anything else we should know when reviewing?

# How to test the change?

Describe here in detail how the change can be validated.


[APMSP-2668]: https://datadoghq.atlassian.net/browse/APMSP-2668?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[SVLS-8627]: https://datadoghq.atlassian.net/browse/SVLS-8627?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[APMSP-2665]: https://datadoghq.atlassian.net/browse/APMSP-2665?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

Co-authored-by: gyuheon.oh <[email protected]>
hoolioh pushed a commit that referenced this pull request Mar 17, 2026
# Release proposal for libdd-crashtracker and its dependencies

This PR contains version bumps based on public API changes and commits
since last release.

## libdd-crashtracker
**Next version:** `2.0.0`

**Semver bump:** `major`
**Tag:** `libdd-crashtracker-v2.0.0`

### Commits

- chore(crashtracking): add tag for target triple (#1741)
- refactor(libdd-crashtracker)!: avoid leaking Endpoint through the
public API (#1705)
- chore(cargo): bump to 29.0.0 (#1702)
- fix(crashtracking): use libunwind to unwind frames (#1663)
- chore(deps): bump blazesym to 0.2.3 and blazesym-c to 0.1.7 (#1654)
- chore(ci): fix crashtracker receiver binary rpath setting (#1652)
- chore(crashtracking): emit a best effort stacktrace for Mac (#1645)
- chore(crashtracker): use default-features=false for aws-lc-sys (#1625)
- feat(crashtracking): report unhandled exceptions (#1596)
- refactor(ddcommon)!: remove direct dependency on hyper client
everywhere in common (#1604)
- feat(crashtracking): include `Kind` in crash ping and clarify
requirements (#1595)
- fix(crashtracking): add process_tags to application field (#1576)
- ci: update nightly in CI to 2026-02-08 (#1539)
- fix(telemetry)!: fix logs payload format [APMSP-2590] (#1498)
- chore(crashtracking): bump os_info crate to 3.14 (#1507)
- Don't bail (#1494)
- feat(crashtracking)!: emit crashing thread name in crash report for
linux crashes (#1485)
- test(crashtracking): add minimal LD preload test for crashtracker
collector (#1428)
- chore: release libddcommon-v1.1.0 (#1456)
- chore: prepare libdd-telemetry-v2.0.0 (#1457)
- [crashtracker] Retrieve panic message when crashing (#1361)
- fix(sidecar): AWS lambda also can return EACCESS for shm_open (#1446)
- chore(crashtracking): add `is_crash_debug` tag to crashtracker
receiver debug logs (#1445)
- [crashtracker] Log errors in crashtracker receiver (#1395)
- chore: add changelog for every published crate (#1396)
- Fix CI (#1389)
- [crashtracker] Set OS info in the crash info builder when receiving
report (#1388)
- crashtracker: support cxx bindings for crashinfo (#1379)

[APMSP-2590]:
https://datadoghq.atlassian.net/browse/APMSP-2590?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
hoolioh pushed a commit that referenced this pull request Mar 17, 2026
# Release proposal for libdd-crashtracker and its dependencies

This PR contains version bumps based on public API changes and commits
since last release.

## libdd-crashtracker
**Next version:** `2.0.0`

**Semver bump:** `major`
**Tag:** `libdd-crashtracker-v2.0.0`

### Commits

- chore(crashtracking): add tag for target triple (#1741)
- refactor(libdd-crashtracker)!: avoid leaking Endpoint through the
public API (#1705)
- chore(cargo): bump to 29.0.0 (#1702)
- fix(crashtracking): use libunwind to unwind frames (#1663)
- chore(deps): bump blazesym to 0.2.3 and blazesym-c to 0.1.7 (#1654)
- chore(ci): fix crashtracker receiver binary rpath setting (#1652)
- chore(crashtracking): emit a best effort stacktrace for Mac (#1645)
- chore(crashtracker): use default-features=false for aws-lc-sys (#1625)
- feat(crashtracking): report unhandled exceptions (#1596)
- refactor(ddcommon)!: remove direct dependency on hyper client
everywhere in common (#1604)
- feat(crashtracking): include `Kind` in crash ping and clarify
requirements (#1595)
- fix(crashtracking): add process_tags to application field (#1576)
- ci: update nightly in CI to 2026-02-08 (#1539)
- fix(telemetry)!: fix logs payload format [APMSP-2590] (#1498)
- chore(crashtracking): bump os_info crate to 3.14 (#1507)
- Don't bail (#1494)
- feat(crashtracking)!: emit crashing thread name in crash report for
linux crashes (#1485)
- test(crashtracking): add minimal LD preload test for crashtracker
collector (#1428)
- chore: release libddcommon-v1.1.0 (#1456)
- chore: prepare libdd-telemetry-v2.0.0 (#1457)
- [crashtracker] Retrieve panic message when crashing (#1361)
- fix(sidecar): AWS lambda also can return EACCESS for shm_open (#1446)
- chore(crashtracking): add `is_crash_debug` tag to crashtracker
receiver debug logs (#1445)
- [crashtracker] Log errors in crashtracker receiver (#1395)
- chore: add changelog for every published crate (#1396)
- Fix CI (#1389)
- [crashtracker] Set OS info in the crash info builder when receiving
report (#1388)
- crashtracker: support cxx bindings for crashinfo (#1379)

[APMSP-2590]:
https://datadoghq.atlassian.net/browse/APMSP-2590?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
hoolioh pushed a commit that referenced this pull request Mar 17, 2026
# Release proposal for libdd-crashtracker and its dependencies

This PR contains version bumps based on public API changes and commits
since last release.

## libdd-crashtracker
**Next version:** `2.0.0`

**Semver bump:** `major`
**Tag:** `libdd-crashtracker-v2.0.0`

### Commits

- chore(ci): give libdd-libunwind-sys its own version (#1743)
- chore(crashtracking): add tag for target triple (#1741)
- refactor(libdd-crashtracker)!: avoid leaking Endpoint through the
public API (#1705)
- chore(cargo): bump to 29.0.0 (#1702)
- fix(crashtracking): use libunwind to unwind frames (#1663)
- chore(deps): bump blazesym to 0.2.3 and blazesym-c to 0.1.7 (#1654)
- chore(ci): fix crashtracker receiver binary rpath setting (#1652)
- chore(crashtracking): emit a best effort stacktrace for Mac (#1645)
- chore(crashtracker): use default-features=false for aws-lc-sys (#1625)
- feat(crashtracking): report unhandled exceptions (#1596)
- refactor(ddcommon)!: remove direct dependency on hyper client
everywhere in common (#1604)
- feat(crashtracking): include `Kind` in crash ping and clarify
requirements (#1595)
- fix(crashtracking): add process_tags to application field (#1576)
- ci: update nightly in CI to 2026-02-08 (#1539)
- fix(telemetry)!: fix logs payload format [APMSP-2590] (#1498)
- chore(crashtracking): bump os_info crate to 3.14 (#1507)
- Don't bail (#1494)
- feat(crashtracking)!: emit crashing thread name in crash report for
linux crashes (#1485)
- test(crashtracking): add minimal LD preload test for crashtracker
collector (#1428)
- chore: release libddcommon-v1.1.0 (#1456)
- chore: prepare libdd-telemetry-v2.0.0 (#1457)
- [crashtracker] Retrieve panic message when crashing (#1361)
- fix(sidecar): AWS lambda also can return EACCESS for shm_open (#1446)
- chore(crashtracking): add `is_crash_debug` tag to crashtracker
receiver debug logs (#1445)
- [crashtracker] Log errors in crashtracker receiver (#1395)
- chore: add changelog for every published crate (#1396)
- Fix CI (#1389)
- [crashtracker] Set OS info in the crash info builder when receiving
report (#1388)
- crashtracker: support cxx bindings for crashinfo (#1379)

[APMSP-2590]:
https://datadoghq.atlassian.net/browse/APMSP-2590?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
hoolioh pushed a commit that referenced this pull request Mar 17, 2026
# Release proposal for libdd-crashtracker and its dependencies

This PR contains version bumps based on public API changes and commits
since last release.

## libdd-crashtracker
**Next version:** `2.0.0`

**Semver bump:** `major`
**Tag:** `libdd-crashtracker-v2.0.0`

### Commits

- chore(crashtracking): rename target triple to runtime platform (#1747)
- chore(ci): give libdd-libunwind-sys its own version (#1743)
- chore(crashtracking): add tag for target triple (#1741)
- refactor(libdd-crashtracker)!: avoid leaking Endpoint through the
public API (#1705)
- chore(cargo): bump to 29.0.0 (#1702)
- fix(crashtracking): use libunwind to unwind frames (#1663)
- chore(deps): bump blazesym to 0.2.3 and blazesym-c to 0.1.7 (#1654)
- chore(ci): fix crashtracker receiver binary rpath setting (#1652)
- chore(crashtracking): emit a best effort stacktrace for Mac (#1645)
- chore(crashtracker): use default-features=false for aws-lc-sys (#1625)
- feat(crashtracking): report unhandled exceptions (#1596)
- refactor(ddcommon)!: remove direct dependency on hyper client
everywhere in common (#1604)
- feat(crashtracking): include `Kind` in crash ping and clarify
requirements (#1595)
- fix(crashtracking): add process_tags to application field (#1576)
- ci: update nightly in CI to 2026-02-08 (#1539)
- fix(telemetry)!: fix logs payload format [APMSP-2590] (#1498)
- chore(crashtracking): bump os_info crate to 3.14 (#1507)
- Don't bail (#1494)
- feat(crashtracking)!: emit crashing thread name in crash report for
linux crashes (#1485)
- test(crashtracking): add minimal LD preload test for crashtracker
collector (#1428)
- chore: release libddcommon-v1.1.0 (#1456)
- chore: prepare libdd-telemetry-v2.0.0 (#1457)
- [crashtracker] Retrieve panic message when crashing (#1361)
- fix(sidecar): AWS lambda also can return EACCESS for shm_open (#1446)
- chore(crashtracking): add `is_crash_debug` tag to crashtracker
receiver debug logs (#1445)
- [crashtracker] Log errors in crashtracker receiver (#1395)
- chore: add changelog for every published crate (#1396)
- Fix CI (#1389)
- [crashtracker] Set OS info in the crash info builder when receiving
report (#1388)
- crashtracker: support cxx bindings for crashinfo (#1379)

Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
hoolioh pushed a commit that referenced this pull request Mar 17, 2026
# Release proposal for libdd-crashtracker and its dependencies

This PR contains version bumps based on public API changes and commits
since last release.

## libdd-crashtracker
**Next version:** `2.0.0`

**Semver bump:** `major`
**Tag:** `libdd-crashtracker-v2.0.0`

### Commits

- chore(crashtracking): rename target triple to runtime platform (#1747)
- chore(ci): give libdd-libunwind-sys its own version (#1743)
- chore(crashtracking): add tag for target triple (#1741)
- refactor(libdd-crashtracker)!: avoid leaking Endpoint through the
public API (#1705)
- chore(cargo): bump to 29.0.0 (#1702)
- fix(crashtracking): use libunwind to unwind frames (#1663)
- chore(deps): bump blazesym to 0.2.3 and blazesym-c to 0.1.7 (#1654)
- chore(ci): fix crashtracker receiver binary rpath setting (#1652)
- chore(crashtracking): emit a best effort stacktrace for Mac (#1645)
- chore(crashtracker): use default-features=false for aws-lc-sys (#1625)
- feat(crashtracking): report unhandled exceptions (#1596)
- refactor(ddcommon)!: remove direct dependency on hyper client
everywhere in common (#1604)
- feat(crashtracking): include `Kind` in crash ping and clarify
requirements (#1595)
- fix(crashtracking): add process_tags to application field (#1576)
- ci: update nightly in CI to 2026-02-08 (#1539)
- fix(telemetry)!: fix logs payload format [APMSP-2590] (#1498)
- chore(crashtracking): bump os_info crate to 3.14 (#1507)
- Don't bail (#1494)
- feat(crashtracking)!: emit crashing thread name in crash report for
linux crashes (#1485)
- test(crashtracking): add minimal LD preload test for crashtracker
collector (#1428)
- chore: release libddcommon-v1.1.0 (#1456)
- chore: prepare libdd-telemetry-v2.0.0 (#1457)
- [crashtracker] Retrieve panic message when crashing (#1361)
- fix(sidecar): AWS lambda also can return EACCESS for shm_open (#1446)
- chore(crashtracking): add `is_crash_debug` tag to crashtracker
receiver debug logs (#1445)
- [crashtracker] Log errors in crashtracker receiver (#1395)
- chore: add changelog for every published crate (#1396)
- Fix CI (#1389)
- [crashtracker] Set OS info in the crash info builder when receiving
report (#1388)
- crashtracker: support cxx bindings for crashinfo (#1379)

Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
hoolioh pushed a commit that referenced this pull request Mar 18, 2026
# Release proposal for libdd-crashtracker and its dependencies

This PR contains version bumps based on public API changes and commits
since last release.

## libdd-common
**Next version:** `3.0.0`

**Semver bump:** `major`
**Tag:** `libdd-common-v3.0.0`

### Commits

- refactor(trace-utils)!: change header name type to accept dynamic
values (#1722)
## libdd-crashtracker
**Next version:** `2.0.0`

**Semver bump:** `major`
**Tag:** `libdd-crashtracker-v2.0.0`

### Commits

- chore(crashtracking): rename target triple to runtime platform (#1747)
- chore(ci): give libdd-libunwind-sys its own version (#1743)
- chore(crashtracking): add tag for target triple (#1741)
- refactor(libdd-crashtracker)!: avoid leaking Endpoint through the
public API (#1705)
- chore(cargo): bump to 29.0.0 (#1702)
- fix(crashtracking): use libunwind to unwind frames (#1663)
- chore(deps): bump blazesym to 0.2.3 and blazesym-c to 0.1.7 (#1654)
- chore(ci): fix crashtracker receiver binary rpath setting (#1652)
- chore(crashtracking): emit a best effort stacktrace for Mac (#1645)
- chore(crashtracker): use default-features=false for aws-lc-sys (#1625)
- feat(crashtracking): report unhandled exceptions (#1596)
- refactor(ddcommon)!: remove direct dependency on hyper client
everywhere in common (#1604)
- feat(crashtracking): include `Kind` in crash ping and clarify
requirements (#1595)
- fix(crashtracking): add process_tags to application field (#1576)
- ci: update nightly in CI to 2026-02-08 (#1539)
- fix(telemetry)!: fix logs payload format [APMSP-2590] (#1498)
- chore(crashtracking): bump os_info crate to 3.14 (#1507)
- Don't bail (#1494)
- feat(crashtracking)!: emit crashing thread name in crash report for
linux crashes (#1485)
- test(crashtracking): add minimal LD preload test for crashtracker
collector (#1428)
- chore: release libddcommon-v1.1.0 (#1456)
- chore: prepare libdd-telemetry-v2.0.0 (#1457)
- [crashtracker] Retrieve panic message when crashing (#1361)
- fix(sidecar): AWS lambda also can return EACCESS for shm_open (#1446)
- chore(crashtracking): add `is_crash_debug` tag to crashtracker
receiver debug logs (#1445)
- [crashtracker] Log errors in crashtracker receiver (#1395)
- chore: add changelog for every published crate (#1396)
- Fix CI (#1389)
- [crashtracker] Set OS info in the crash info builder when receiving
report (#1388)
- crashtracker: support cxx bindings for crashinfo (#1379)

[APMSP-2590]:
https://datadoghq.atlassian.net/browse/APMSP-2590?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

---------

Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
@gyuheon0h gyuheon0h restored the gyuheon0h/PROF-13672-libunwind branch March 25, 2026 19:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants