Skip to content

Conversation

@gyuheon0h
Copy link
Contributor

@gyuheon0h gyuheon0h commented Oct 1, 2025

What does this PR do?

This PR allows runtimes to register a callback to extract runtime stack. They can choose either to emit frames frame by frame, or to dump a whole stacktrace string. The important contract is that the logic to retrieve the runtime stack is happening within a fork of the crashing process, from a signal handler, so it must be async-signal-safe.

Currently, we add runtime stacks as a new runtime_stacks field in the Experimental field. If runtimes choose to emit frames one by one using ddog_RuntimeStackFrame, the runtime_stacks field will be nicely propagated. If they choose to dump the whole traceback string, additional parsing will have to be implemented in the Receiver side appropriate for each different runtime's style/syntax of tracebacks.

Motivation

Current crash tracking captures only native stack traces, which are insufficient for applications using interpreted languages. When a Python/Ruby/PHP application crashes, developers need visibility into both:

  1. The native call stack (C/C++ level)
  2. The runtime call stack (Python/Ruby/PHP script level)

Without runtime stack traces, debugging crashes in interpreted languages is significantly hampered as the native stack only shows interpreter internals and native extension modules, not the actual application code execution path.

Additional Notes

Anything else we should know when reviewing?

How to test the change?

Unit tests.

There is a very dummy implementation of dd-trace-py consuming this API in this experimental PR: DataDog/dd-trace-py#14765

By triggering a crash with the tracer and agent attached, we can see outputted Experimental fields:

  1. Frame by Frame
{
  "ucontext": "ucontext_t { uc_flags: 7, uc_link: 0x0, uc_stack: stack_t { ss_sp: 0x743deadc0000, ss_flags: 0, ss_size: 65536 }, uc_mcontext: mcontext_t { gregs: [0, 127809331044922, 0, 127809325475264, 140726899625856, 140726899626064, 1, 0, 0, -1, 0, 4294967295, 127809325530248, 0, 140726899625160, 140726899625368, 127809330854360, 66179, 12103423998558259, 4, 14, 0, 0], fpregs: 0x743deadcf540, __private: [0, 0, 0, 0, 0, 0, 0, 0] }, uc_sigmask: sigset_t { __val: [0, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }, __private: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 31, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 116, 0, 111, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 114, 0, 0, 0, 0, 0, 99, 0, 111, 0, 0, 0, 0, 0, 105, 0, 101, 0, 111, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 99, 0, 0, 0, 104, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 111, 0, 0, 0, 114, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 128, 199, 48, 49, 93, 136, 85, 59, 0, 0, 0, 0, 0, 0, 0, 0, 100, 171, 99, 130, 7, 91, 229, 191, 0, 0, 0, 0, 0, 0, 0, 0, 27, 99, 108, 213, 49, 161, 233, 63, 0, 0, 0, 0, 0, 0, 0, 0, 233, 69, 72, 155, 91, 73, 242, 191, 0, 0, 0, 0, 0, 0, 0, 0, 52, 121, 227, 150, 79, 248, 140, 67, 143, 13, 128, 21, 35, 58, 40, 13, 211, 19, 203, 193, 101, 194, 7, 72, 227, 201, 177, 122, 54, 74, 46, 67, 23, 38, 50, 64, 173, 107, 173, 144, 4, 8, 252, 226, 102, 193, 248, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 88, 80, 70, 140, 10, 0, 0, 255, 2, 0, 0, 0, 0, 0, 0, 136, 10, 0, 0, 0, 0, 0, 0] }",
  "runtime_stack": {
    "format": "Datadog Runtime Callback 1.0",
    "frames": [
      {
        "function": "string_at",
        "file": "/home/bits/.pyenv/versions/3.11.13/lib/python3.11/ctypes/__init__.py",
        "line": 519
      },
      {
        "function": "func16",
        "file": "tests/internal/crashtracker/test_crashtracker.py",
        "line": 724
      },
     ........
      {
        "function": "func2",
        "file": "tests/internal/crashtracker/test_crashtracker.py",
        "line": 682
      },
      {
        "function": "func1",
        "file": "tests/internal/crashtracker/test_crashtracker.py",
        "line": 679
      },
      {
        "function": "<module>",
        "file": "tests/internal/crashtracker/test_crashtracker.py",
        "line": 734
      }
    ],
    "runtime_type": "python"
  }
}
  1. Whole traceback string
{
  "ucontext": "ucontext_t { uc_flags: 7, uc_link: 0x0, uc_stack: stack_t { ss_sp: 0x7c4c9c841000, ss_flags: 0, ss_size: 65536 }, uc_mcontext: mcontext_t { gregs: [0, 136668534166074, 0, 136668528596416, 140724573444400, 140724573444608, 1, 0, 0, -1, 0, 4294967295, 136668528651400, 0, 140724573443704, 140724573443912, 136668533975512, 66179, 12103423998558259, 4, 14, 0, 0], fpregs: 0x7c4c9c850540, __private: [0, 0, 0, 0, 0, 0, 0, 0] }, uc_sigmask: sigset_t { __val: [0, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }, __private: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 31, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 116, 0, 111, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 114, 0, 0, 0, 0, 0, 99, 0, 111, 0, 0, 0, 0, 0, 105, 0, 101, 0, 111, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 99, 0, 0, 0, 104, 0, 0, 0, 32, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 111, 0, 0, 0, 114, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 128, 199, 48, 49, 93, 136, 85, 59, 0, 0, 0, 0, 0, 0, 0, 0, 100, 171, 99, 130, 7, 91, 229, 191, 0, 0, 0, 0, 0, 0, 0, 0, 27, 99, 108, 213, 49, 161, 233, 63, 0, 0, 0, 0, 0, 0, 0, 0, 233, 69, 72, 155, 91, 73, 242, 191, 0, 0, 0, 0, 0, 0, 0, 0, 255, 52, 127, 42, 141, 178, 13, 152, 156, 26, 175, 206, 42, 181, 80, 159, 182, 24, 207, 207, 28, 16, 244, 61, 0, 111, 67, 149, 212, 73, 16, 112, 165, 200, 182, 175, 115, 89, 172, 247, 213, 71, 73, 142, 243, 74, 61, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 88, 80, 70, 140, 10, 0, 0, 255, 2, 0, 0, 0, 0, 0, 0, 136, 10, 0, 0, 0, 0, 0, 0] }",
  "runtime_stack": {
    "format": "Datadog Runtime Callback 1.0",
    "stacktrace_string": "Current thread 0x00007c4c9f46db80 (most recent call first):\n  File \"/home/bits/.pyenv/versions/3.11.13/lib/python3.11/ctypes/__init__.py\", line 519 in string_at\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 724 in func16\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 721 in func15\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 718 in func14\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 715 in func13\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 712 in func12\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 709 in func11\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 706 in func10\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 703 in func9\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 700 in func8\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 697 in func7\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 694 in func6\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 691 in func5\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 688 in func4\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 685 in func3\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 682 in func2\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 679 in func1\n  File \"tests/internal/crashtracker/test_crashtracker.py\", line 734 in <module>",
    "runtime_type": "python"
  }
}

@datadog-official
Copy link

datadog-official bot commented Oct 1, 2025

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 2e9dcc8 | Docs | Datadog PR Page | Was this helpful? Give us feedback!

@pr-commenter
Copy link

pr-commenter bot commented Oct 1, 2025

Benchmarks

Comparison

Benchmark execution time: 2025-11-03 15:31:04

Comparing candidate commit 2e9dcc8 in PR branch gyuheon0h/prof-12432-runtime-stacks with baseline commit c4a66e2 in branch main.

Found 12 performance improvements and 4 performance regressions! Performance is the same for 39 metrics, 2 unstable metrics.

scenario:benching serializing traces from their internal representation to msgpack

  • 🟩 execution_time [-625.379µs; -612.724µs] or [-4.207%; -4.122%]

scenario:credit_card/is_card_number/37828224631000521389798

  • 🟩 execution_time [-6.504µs; -6.475µs] or [-12.460%; -12.405%]
  • 🟩 throughput [+2713239.202op/s; +2726826.716op/s] or [+14.162%; +14.233%]

scenario:credit_card/is_card_number/x371413321323331

  • 🟥 execution_time [+592.987ns; +597.461ns] or [+9.826%; +9.900%]
  • 🟥 throughput [-14930277.586op/s; -14822255.524op/s] or [-9.010%; -8.945%]

scenario:credit_card/is_card_number_no_luhn/ 378282246310005

  • 🟩 execution_time [-4.579µs; -4.541µs] or [-7.896%; -7.831%]
  • 🟩 throughput [+1465933.630op/s; +1477279.660op/s] or [+8.501%; +8.567%]

scenario:credit_card/is_card_number_no_luhn/378282246310005

  • 🟩 execution_time [-4.622µs; -4.569µs] or [-8.433%; -8.335%]
  • 🟩 throughput [+1660511.881op/s; +1678442.798op/s] or [+9.101%; +9.200%]

scenario:credit_card/is_card_number_no_luhn/37828224631000521389798

  • 🟩 execution_time [-6.515µs; -6.487µs] or [-12.479%; -12.426%]
  • 🟩 throughput [+2717937.496op/s; +2730943.931op/s] or [+14.190%; +14.258%]

scenario:credit_card/is_card_number_no_luhn/x371413321323331

  • 🟥 execution_time [+586.268ns; +590.452ns] or [+9.715%; +9.785%]
  • 🟥 throughput [-14769518.005op/s; -14672312.861op/s] or [-8.913%; -8.854%]

scenario:normalization/normalize_service/normalize_service/[empty string]

  • 🟩 execution_time [-1.869µs; -1.815µs] or [-4.840%; -4.700%]
  • 🟩 throughput [+1278007.524op/s; +1317058.691op/s] or [+4.936%; +5.087%]

scenario:redis/obfuscate_redis_string

  • 🟩 execution_time [-2.239µs; -1.856µs] or [-6.427%; -5.326%]

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 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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.677ms 10.713ms ± 0.014ms 10.712ms ± 0.008ms 10.721ms 10.736ms 10.762ms 10.784ms 0.67% 1.244 4.411 0.13% 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.711ms; 10.715ms] or [-0.019%; +0.019%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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 240.472ns 253.745ns ± 13.663ns 245.875ns ± 3.786ns 262.914ns 283.865ns 286.958ns 288.379ns 17.29% 1.063 -0.112 5.37% 0.966ns 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 [251.852ns; 255.639ns] or [-0.746%; +0.746%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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.460µs 2.487µs ± 0.021µs 2.482µs ± 0.009µs 2.494µs 2.551µs 2.556µs 2.557µs 3.02% 1.969 3.752 0.85% 0.002µ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.484µs; 2.490µs] or [-0.118%; +0.118%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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.220µs 86.415µs ± 0.156µs 86.390µs ± 0.047µs 86.438µs 86.652µs 87.035µs 87.680µs 1.49% 4.172 24.876 0.18% 0.011µ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.393µs; 86.437µs] or [-0.025%; +0.025%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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 32.262µs 32.793µs ± 0.950µs 32.343µs ± 0.038µs 32.492µs 34.750µs 34.815µs 37.070µs 14.62% 1.861 2.195 2.89% 0.067µ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 [32.662µs; 32.925µs] or [-0.402%; +0.402%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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.247µs 3.267µs ± 1.453µs 3.040µs ± 0.028µs 3.064µs 3.711µs 14.526µs 14.897µs 389.98% 7.308 54.655 44.38% 0.103µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [3.066µs; 3.468µs] or [-6.166%; +6.166%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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.980µs 5.048µs ± 0.047µs 5.031µs ± 0.038µs 5.088µs 5.140µs 5.144µs 5.152µs 2.41% 0.417 -0.963 0.92% 0.003µ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.041µs; 5.054µs] 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 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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 121.474µs 123.030µs ± 1.838µs 122.680µs ± 0.387µs 123.086µs 124.948µs 131.090µs 138.276µs 12.71% 5.616 37.925 1.49% 0.130µ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 [122.776µs; 123.285µs] or [-0.207%; +0.207%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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 162.247µs 163.264µs ± 0.493µs 163.244µs ± 0.151µs 163.385µs 163.644µs 163.989µs 169.153µs 3.62% 8.494 99.775 0.30% 0.035µ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 [163.196µs; 163.333µs] or [-0.042%; +0.042%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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.894µs 3.915µs ± 0.003µs 3.915µs ± 0.002µs 3.917µs 3.921µs 3.923µs 3.925µs 0.24% -1.178 9.687 0.08% 0.000µs 1 200
credit_card/is_card_number/ throughput 254791145.554op/s 255402893.265op/s ± 202557.880op/s 255400981.040op/s ± 127599.983op/s 255529743.667op/s 255668865.474op/s 255739576.927op/s 256782629.233op/s 0.54% 1.203 9.858 0.08% 14323.005op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 77.892µs 78.620µs ± 0.620µs 78.517µs ± 0.409µs 78.910µs 79.782µs 80.205µs 82.756µs 5.40% 2.170 9.616 0.79% 0.044µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12083786.119op/s 12720111.866op/s ± 98612.346op/s 12736107.502op/s ± 66340.539op/s 12802675.022op/s 12825892.872op/s 12834463.854op/s 12838308.380op/s 0.80% -2.015 8.347 0.77% 6972.946op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 71.399µs 71.736µs ± 0.444µs 71.539µs ± 0.073µs 71.795µs 72.536µs 73.970µs 74.218µs 3.74% 2.917 10.638 0.62% 0.031µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13473880.017op/s 13940618.709op/s ± 84778.917op/s 13978306.367op/s ± 14237.007op/s 13988130.372op/s 13995321.224op/s 13999715.597op/s 14005840.435op/s 0.20% -2.842 10.061 0.61% 5994.775op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.893µs 3.915µs ± 0.003µs 3.914µs ± 0.002µs 3.916µs 3.921µs 3.924µs 3.925µs 0.29% -0.357 8.254 0.09% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254762589.684op/s 255452512.983op/s ± 220356.999op/s 255490789.590op/s ± 102857.117op/s 255564069.917op/s 255703263.644op/s 255757790.046op/s 256859738.397op/s 0.54% 0.384 8.397 0.09% 15581.593op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 68.235µs 68.623µs ± 0.283µs 68.588µs ± 0.232µs 68.818µs 69.134µs 69.354µs 69.633µs 1.52% 0.759 0.063 0.41% 0.020µs 1 200
credit_card/is_card_number/378282246310005 throughput 14361094.575op/s 14572685.223op/s ± 59813.113op/s 14579896.510op/s ± 49256.244op/s 14629526.407op/s 14647402.291op/s 14651237.434op/s 14655194.393op/s 0.52% -0.741 0.016 0.41% 4229.426op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 45.416µs 45.708µs ± 0.100µs 45.708µs ± 0.073µs 45.782µs 45.854µs 45.907µs 45.918µs 0.46% -0.223 -0.322 0.22% 0.007µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 21777913.020op/s 21877999.554op/s ± 47760.445op/s 21878128.437op/s ± 34670.229op/s 21908656.659op/s 21954732.052op/s 21994506.524op/s 22018477.021op/s 0.64% 0.234 -0.310 0.22% 3377.173op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.587µs 6.630µs ± 0.014µs 6.633µs ± 0.004µs 6.637µs 6.640µs 6.645µs 6.718µs 1.27% 0.722 10.226 0.20% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 148854353.803op/s 150829512.986op/s ± 306691.965op/s 150750169.283op/s ± 99761.086op/s 150955583.386op/s 151465783.046op/s 151652371.470op/s 151821918.319op/s 0.71% -0.652 9.842 0.20% 21686.397op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.896µs 3.915µs ± 0.003µs 3.915µs ± 0.002µs 3.917µs 3.919µs 3.922µs 3.924µs 0.22% -1.463 12.421 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254839633.131op/s 255418833.278op/s ± 177571.982op/s 255406065.902op/s ± 107343.727op/s 255523206.912op/s 255652303.260op/s 255721674.340op/s 256696909.797op/s 0.51% 1.489 12.612 0.07% 12556.235op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 65.602µs 65.729µs ± 0.053µs 65.736µs ± 0.035µs 65.765µs 65.817µs 65.831µs 65.837µs 0.15% -0.275 -0.365 0.08% 0.004µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15188986.734op/s 15214104.709op/s ± 12263.424op/s 15212440.995op/s ± 8064.095op/s 15222351.167op/s 15235358.509op/s 15241612.523op/s 15243537.935op/s 0.20% 0.279 -0.363 0.08% 867.155op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 53.352µs 53.430µs ± 0.042µs 53.423µs ± 0.024µs 53.447µs 53.512µs 53.552µs 53.630µs 0.39% 1.258 2.586 0.08% 0.003µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18646416.922op/s 18716139.556op/s ± 14709.335op/s 18718453.060op/s ± 8316.906op/s 18726579.170op/s 18735713.085op/s 18739527.041op/s 18743428.584op/s 0.13% -1.251 2.556 0.08% 1040.107op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.897µs 3.915µs ± 0.003µs 3.915µs ± 0.002µs 3.917µs 3.919µs 3.921µs 3.922µs 0.20% -0.979 7.209 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 254943498.172op/s 255441997.771op/s ± 183704.814op/s 255454654.523op/s ± 112308.829op/s 255560217.090op/s 255677769.660op/s 255768174.195op/s 256624483.724op/s 0.46% 0.996 7.331 0.07% 12989.892op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 50.143µs 50.215µs ± 0.031µs 50.213µs ± 0.021µs 50.234µs 50.271µs 50.303µs 50.310µs 0.19% 0.421 -0.009 0.06% 0.002µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 19876811.473op/s 19914335.240op/s ± 12470.792op/s 19915325.017op/s ± 8511.398op/s 19923612.869op/s 19931784.365op/s 19939407.077op/s 19942774.209op/s 0.14% -0.417 -0.013 0.06% 881.818op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 45.427µs 45.708µs ± 0.094µs 45.722µs ± 0.060µs 45.773µs 45.857µs 45.896µs 45.920µs 0.43% -0.329 -0.185 0.21% 0.007µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 21776999.153op/s 21878315.563op/s ± 45101.310op/s 21871462.119op/s ± 28667.778op/s 21913389.081op/s 21956730.816op/s 21984562.102op/s 22013335.659op/s 0.65% 0.340 -0.176 0.21% 3189.144op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.572µs 6.623µs ± 0.014µs 6.627µs ± 0.010µs 6.634µs 6.639µs 6.647µs 6.651µs 0.38% -0.738 0.221 0.22% 0.001µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 150342304.852op/s 150992404.870op/s ± 330772.156op/s 150908060.062op/s ± 218064.934op/s 151203680.364op/s 151604918.012op/s 151861939.277op/s 152150768.422op/s 0.82% 0.749 0.246 0.22% 23389.123op/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.915µs; 3.916µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ throughput [255374820.691op/s; 255430965.839op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [78.535µs; 78.706µs] or [-0.109%; +0.109%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12706445.144op/s; 12733778.589op/s] or [-0.107%; +0.107%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [71.674µs; 71.797µs] or [-0.086%; +0.086%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13928869.166op/s; 13952368.252op/s] or [-0.084%; +0.084%] None None None
credit_card/is_card_number/37828224631 execution_time [3.914µs; 3.915µs] or [-0.012%; +0.012%] None None None
credit_card/is_card_number/37828224631 throughput [255421973.622op/s; 255483052.343op/s] or [-0.012%; +0.012%] None None None
credit_card/is_card_number/378282246310005 execution_time [68.584µs; 68.662µs] or [-0.057%; +0.057%] None None None
credit_card/is_card_number/378282246310005 throughput [14564395.701op/s; 14580974.746op/s] or [-0.057%; +0.057%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [45.694µs; 45.722µs] or [-0.030%; +0.030%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [21871380.416op/s; 21884618.693op/s] or [-0.030%; +0.030%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.628µs; 6.632µs] or [-0.028%; +0.028%] None None None
credit_card/is_card_number/x371413321323331 throughput [150787008.430op/s; 150872017.543op/s] or [-0.028%; +0.028%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.915µs; 3.916µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ throughput [255394223.509op/s; 255443443.047op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [65.721µs; 65.736µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15212405.117op/s; 15215804.302op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [53.424µs; 53.436µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18714100.984op/s; 18718178.129op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.914µs; 3.915µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255416538.051op/s; 255467457.492op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [50.211µs; 50.219µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [19912606.909op/s; 19916063.572op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [45.695µs; 45.721µs] or [-0.029%; +0.029%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [21872064.955op/s; 21884566.170op/s] or [-0.029%; +0.029%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.621µs; 6.625µs] or [-0.030%; +0.030%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [150946563.031op/s; 151038246.710op/s] or [-0.030%; +0.030%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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/2597 execution_time 6.197ms 6.417ms ± 0.060ms 6.426ms ± 0.017ms 6.446ms 6.471ms 6.494ms 6.785ms 5.59% -0.447 9.591 0.93% 0.004ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2597 execution_time [6.409ms; 6.426ms] or [-0.130%; +0.130%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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 496.120µs 497.068µs ± 0.975µs 496.914µs ± 0.258µs 497.163µs 497.643µs 500.837µs 504.652µs 1.56% 5.202 33.309 0.20% 0.069µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1981562.224op/s 2011804.888op/s ± 3905.546op/s 2012422.573op/s ± 1043.516op/s 2013478.843op/s 2014662.591op/s 2015553.358op/s 2015642.054op/s 0.16% -5.154 32.778 0.19% 276.164op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 370.095µs 370.772µs ± 0.275µs 370.740µs ± 0.161µs 370.922µs 371.275µs 371.416µs 371.907µs 0.31% 0.495 1.154 0.07% 0.019µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2688847.712op/s 2697078.040op/s ± 2001.606op/s 2697310.933op/s ± 1171.793op/s 2698269.345op/s 2700075.412op/s 2701319.154op/s 2702007.674op/s 0.17% -0.489 1.139 0.07% 141.535op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 168.439µs 168.807µs ± 0.155µs 168.792µs ± 0.095µs 168.902µs 169.098µs 169.217µs 169.260µs 0.28% 0.495 0.105 0.09% 0.011µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5908071.236op/s 5923921.199op/s ± 5432.496op/s 5924442.009op/s ± 3340.856op/s 5927531.720op/s 5932521.909op/s 5933464.159op/s 5936878.828op/s 0.21% -0.490 0.099 0.09% 384.135op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.465µs 36.781µs ± 0.190µs 36.757µs ± 0.104µs 36.869µs 37.036µs 37.276µs 38.100µs 3.65% 3.019 17.402 0.52% 0.013µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26246569.226op/s 27188387.320op/s ± 138361.653op/s 27205859.054op/s ± 76826.362op/s 27272323.116op/s 27356133.931op/s 27385256.915op/s 27423632.041op/s 0.80% -2.864 16.094 0.51% 9783.646op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 46.157µs 46.304µs ± 0.118µs 46.292µs ± 0.040µs 46.334µs 46.419µs 46.479µs 47.727µs 3.10% 8.818 103.383 0.25% 0.008µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 20952715.309op/s 21596352.142op/s ± 53888.854op/s 21602105.774op/s ± 18595.576op/s 21619928.385op/s 21640797.838op/s 21649949.797op/s 21665321.812op/s 0.29% -8.608 100.009 0.25% 3810.517op/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 [496.933µs; 497.203µs] or [-0.027%; +0.027%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2011263.617op/s; 2012346.159op/s] or [-0.027%; +0.027%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [370.734µs; 370.810µs] or [-0.010%; +0.010%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2696800.637op/s; 2697355.443op/s] or [-0.010%; +0.010%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [168.786µs; 168.829µs] or [-0.013%; +0.013%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5923168.307op/s; 5924674.091op/s] or [-0.013%; +0.013%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [36.755µs; 36.808µs] or [-0.072%; +0.072%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27169211.725op/s; 27207562.914op/s] or [-0.071%; +0.071%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.288µs; 46.321µs] or [-0.035%; +0.035%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21588883.665op/s; 21603820.619op/s] or [-0.035%; +0.035%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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.446µs 185.890µs ± 0.290µs 185.865µs ± 0.163µs 186.025µs 186.277µs 186.799µs 187.955µs 1.12% 2.658 14.794 0.16% 0.021µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5320435.180op/s 5379535.511op/s ± 8356.762op/s 5380249.468op/s ± 4730.320op/s 5385289.167op/s 5389411.380op/s 5390635.104op/s 5392417.695op/s 0.23% -2.613 14.408 0.15% 590.912op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.779µs 17.865µs ± 0.113µs 17.859µs ± 0.033µs 17.889µs 17.935µs 17.958µs 19.342µs 8.30% 11.109 142.340 0.63% 0.008µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 51701949.989op/s 55976362.926op/s ± 332230.466op/s 55995428.139op/s ± 102083.912op/s 56108037.682op/s 56223253.945op/s 56237224.236op/s 56246425.516op/s 0.45% -10.708 135.448 0.59% 23492.242op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.525µs 10.573µs ± 0.023µs 10.567µs ± 0.012µs 10.586µs 10.616µs 10.642µs 10.650µs 0.79% 0.899 0.703 0.21% 0.002µs 1 200
normalization/normalize_name/normalize_name/good throughput 93894425.395op/s 94576530.135op/s ± 203044.646op/s 94635264.162op/s ± 111840.627op/s 94721910.761op/s 94811797.141op/s 94950041.503op/s 95009464.683op/s 0.40% -0.887 0.675 0.21% 14357.425op/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.850µs; 185.930µs] or [-0.022%; +0.022%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5378377.344op/s; 5380693.678op/s] or [-0.022%; +0.022%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.850µs; 17.881µs] or [-0.088%; +0.088%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55930318.978op/s; 56022406.873op/s] or [-0.082%; +0.082%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.570µs; 10.577µs] or [-0.030%; +0.030%] None None None
normalization/normalize_name/normalize_name/good throughput [94548390.100op/s; 94604670.171op/s] or [-0.030%; +0.030%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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 17.839µs 25.430µs ± 9.481µs 18.029µs ± 0.137µs 33.432µs 42.419µs 43.339µs 69.443µs 285.18% 1.133 1.655 37.19% 0.670µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [24.116µs; 26.744µs] or [-5.167%; +5.167%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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 14.202ms 14.247ms ± 0.030ms 14.242ms ± 0.011ms 14.252ms 14.303ms 14.356ms 14.439ms 1.38% 2.841 11.597 0.21% 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.243ms; 14.251ms] or [-0.029%; +0.029%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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 171.682ns 175.570ns ± 3.132ns 174.851ns ± 2.014ns 177.068ns 181.286ns 185.414ns 190.427ns 8.91% 1.521 3.344 1.78% 0.221ns 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 [175.136ns; 176.004ns] or [-0.247%; +0.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 2e9dcc8 1762183029 gyuheon0h/prof-12432-runtime-stacks
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 61.804ms 62.397ms ± 2.293ms 62.077ms ± 0.073ms 62.146ms 62.320ms 78.852ms 81.962ms 32.03% 7.674 58.467 3.67% 0.162ms 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 [62.079ms; 62.714ms] or [-0.509%; +0.509%] None None None

Baseline

Omitted due to size.

@codecov-commenter
Copy link

codecov-commenter commented Oct 1, 2025

Codecov Report

❌ Patch coverage is 58.28488% with 287 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.70%. Comparing base (c55d7fd) to head (2e9dcc8).
⚠️ Report is 5 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1252      +/-   ##
==========================================
- Coverage   72.11%   71.70%   -0.42%     
==========================================
  Files         368      373       +5     
  Lines       58111    58987     +876     
==========================================
+ Hits        41907    42295     +388     
- Misses      16204    16692     +488     
Components Coverage Δ
datadog-crashtracker 52.12% <63.93%> (+1.49%) ⬆️
datadog-crashtracker-ffi 11.15% <63.51%> (+5.28%) ⬆️
datadog-alloc 98.73% <ø> (ø)
data-pipeline 87.89% <ø> (-0.30%) ⬇️
data-pipeline-ffi 88.19% <ø> (ø)
ddcommon 81.11% <ø> (+0.15%) ⬆️
ddcommon-ffi 74.28% <ø> (+0.44%) ⬆️
ddtelemetry 60.02% <ø> (ø)
ddtelemetry-ffi 21.24% <ø> (ø)
dogstatsd-client 83.26% <ø> (ø)
datadog-ipc 82.39% <ø> (-0.11%) ⬇️
datadog-profiling 76.50% <ø> (-0.40%) ⬇️
datadog-profiling-ffi 62.11% <ø> (-0.01%) ⬇️
datadog-sidecar 36.32% <ø> (-1.31%) ⬇️
datdog-sidecar-ffi 9.53% <ø> (-6.36%) ⬇️
spawn-worker 55.18% <ø> (ø)
tinybytes 92.44% <ø> (ø)
datadog-trace-normalization 98.24% <ø> (ø)
datadog-trace-obfuscation 94.17% <ø> (ø)
datadog-trace-protobuf 59.65% <ø> (ø)
datadog-trace-utils 90.19% <ø> (ø)
datadog-tracer-flare 61.03% <ø> (-3.95%) ⬇️
datadog-log 75.57% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@dd-octo-sts
Copy link

dd-octo-sts bot commented Oct 1, 2025

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 7.25 MB 7.25 MB +0% (+16 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 71.36 MB 71.45 MB +.12% (+93.57 KB) 🔍
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 83.71 MB 83.86 MB +.18% (+156.60 KB) 🔍
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 9.20 MB 9.27 MB +.73% (+68.82 KB) 🔍
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 18.61 MB 18.61 MB --.04% (-8.00 KB) 💪
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 65.77 KB 65.77 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 131.06 MB 131.01 MB --.03% (-48.00 KB) 💪
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 692.07 MB 692.41 MB +.04% (+352.02 KB) 🔍
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 5.93 MB 5.93 MB +0% (+512 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 65.77 KB 65.77 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 17.51 MB 17.51 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 32.46 MB 32.46 MB +0% (+110 B) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 15.85 MB 15.84 MB --.02% (-3.50 KB) 💪
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 66.79 KB 66.79 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 133.16 MB 133.13 MB --.01% (-24.00 KB) 💪
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 680.69 MB 681.05 MB +.05% (+364.26 KB) 🔍
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 4.54 MB 4.55 MB +.04% (+2.00 KB) 🔍
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 66.79 KB 66.79 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 18.66 MB 18.66 MB +.04% (+8.00 KB) 🔍
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 30.52 MB 30.52 MB +.02% (+8.29 KB) 🔍
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 63.98 MB 64.07 MB +.13% (+85.44 KB) 🔍
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 8.56 MB 8.57 MB +.13% (+12.01 KB) 🔍
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 78.42 MB 78.56 MB +.17% (+137.60 KB) 🔍
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 9.91 MB 9.92 MB +.11% (+11.32 KB) 🔍

@gyuheon0h gyuheon0h changed the title [crashtracking] Allow runtimes to register runtime collection callbacks [crashtracking] Allow runtimes to register runtime stack collection callbacks Oct 1, 2025
@gyuheon0h gyuheon0h force-pushed the gyuheon0h/prof-12432-runtime-stacks branch from aa11ce8 to 3ee9ed8 Compare October 2, 2025 17:13
@gyuheon0h gyuheon0h marked this pull request as ready for review October 2, 2025 18:30
@gyuheon0h gyuheon0h requested a review from a team as a code owner October 2, 2025 18:30
@gyuheon0h gyuheon0h requested a review from gleocadie October 2, 2025 18:32
@gyuheon0h gyuheon0h marked this pull request as draft October 3, 2025 14:46
@gyuheon0h gyuheon0h force-pushed the gyuheon0h/prof-12432-runtime-stacks branch 3 times, most recently from 2846753 to 5fad559 Compare October 3, 2025 16:57
@gyuheon0h gyuheon0h marked this pull request as ready for review October 6, 2025 20:10
@gyuheon0h gyuheon0h requested a review from a team as a code owner October 6, 2025 20:10
@gyuheon0h gyuheon0h force-pushed the gyuheon0h/prof-12432-runtime-stacks branch from 9f05ba9 to bc09cd5 Compare October 24, 2025 13:57
Copy link
Contributor Author

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

@gyuheon0h gyuheon0h force-pushed the gyuheon0h/prof-12432-runtime-stacks branch 6 times, most recently from 8a36ebb to d86a9c3 Compare October 28, 2025 14:26
@gyuheon0h gyuheon0h requested a review from a team as a code owner October 28, 2025 20:59
@gyuheon0h
Copy link
Contributor Author

TODO: Fix Frame emitting allocation issue

@gyuheon0h gyuheon0h force-pushed the gyuheon0h/prof-12432-runtime-stacks branch 2 times, most recently from c476d2a to f078323 Compare October 29, 2025 18:59
@gyuheon0h gyuheon0h force-pushed the gyuheon0h/prof-12432-runtime-stacks branch 13 times, most recently from 283cb7b to 7d1bfee Compare October 30, 2025 01:28
@gyuheon0h gyuheon0h requested review from a team as code owners October 31, 2025 16:11
@gyuheon0h gyuheon0h removed request for a team October 31, 2025 16:12
@gyuheon0h gyuheon0h force-pushed the gyuheon0h/prof-12432-runtime-stacks branch from 86bea96 to 7d1bfee Compare October 31, 2025 16:13
@gyuheon0h
Copy link
Contributor Author

TODO: add a type_name field to RuntimeStackFrame

@gyuheon0h gyuheon0h force-pushed the gyuheon0h/prof-12432-runtime-stacks branch from 7d1bfee to 6830707 Compare October 31, 2025 16:20
@gyuheon0h gyuheon0h force-pushed the gyuheon0h/prof-12432-runtime-stacks branch 2 times, most recently from e608cf5 to f80970e Compare October 31, 2025 16:39
backtrace = "=0.3.74"
chrono = {version = "0.4", default-features = false, features = ["std", "clock", "serde"]}
ddcommon = {path = "../ddcommon" }
ddcommon-ffi = {path = "../ddcommon-ffi" }
Copy link
Contributor

@bwoebi bwoebi Nov 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-ffi crates should not depend on ffi crates. Actually, I don't see that you're even using that dep in this crate? Leftover maybe?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah I am. I was defining the runtime stack frame struct in the non ffi crate and exporting it in the ffi crate. I should probably have an FFI specific version?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.

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.

5 participants