Skip to content

Conversation

gyuheon0h
Copy link
Contributor

@gyuheon0h gyuheon0h commented Sep 23, 2025

What does this PR do?

This PR adds a document in the docs/ folder of this repository to outline how we currently communicate over a UNIX socket to extract crash data in our two process, Collector and Receiver, architecture in the Crashtracker

Motivation

Quality of life and DevX for developers wanting to understand Crashtracker architecture

Additional Notes

Note to reviewers: Pressing the Display the rich diff button renders the Markdown, potentially making reading and reviewing easier
Screenshot 2025-09-05 at 1 04 36 PM

How to test the change?

Describe here in detail how the change can be validated.

Ticket: https://datadoghq.atlassian.net/browse/PROF-12520

@gyuheon0h gyuheon0h requested a review from a team as a code owner September 23, 2025 19:37
@pr-commenter
Copy link

pr-commenter bot commented Sep 23, 2025

Benchmarks

Comparison

Benchmark execution time: 2025-09-25 17:31:04

Comparing candidate commit e6d47ef in PR branch gyuheon0h/prof-1250-unix-comm-docs with baseline commit 8719ad8 in branch main.

Found 15 performance improvements and 2 performance regressions! Performance is the same for 36 metrics, 2 unstable metrics.

scenario:concentrator/add_spans_to_concentrator

  • 🟩 execution_time [-2.335ms; -2.330ms] or [-22.256%; -22.213%]

scenario:credit_card/is_card_number/37828224631000521389798

  • 🟩 execution_time [-7.244µs; -7.222µs] or [-13.872%; -13.831%]
  • 🟩 throughput [+3074944.766op/s; +3083389.869op/s] or [+16.056%; +16.100%]

scenario:credit_card/is_card_number/x371413321323331

  • 🟩 execution_time [-340.349ns; -336.897ns] or [-5.638%; -5.581%]
  • 🟩 throughput [+9796990.260op/s; +9893242.215op/s] or [+5.914%; +5.972%]

scenario:credit_card/is_card_number_no_luhn/ 3782-8224-6310-005

  • 🟩 execution_time [-3.169µs; -3.090µs] or [-4.916%; -4.794%]
  • 🟩 throughput [+781599.364op/s; +801869.534op/s] or [+5.038%; +5.169%]

scenario:credit_card/is_card_number_no_luhn/ 378282246310005

  • 🟩 execution_time [-4.691µs; -4.638µs] or [-8.037%; -7.946%]
  • 🟩 throughput [+1479575.325op/s; +1496390.062op/s] or [+8.636%; +8.735%]

scenario:credit_card/is_card_number_no_luhn/378282246310005

  • 🟩 execution_time [-4.649µs; -4.578µs] or [-8.482%; -8.353%]
  • 🟩 throughput [+1664226.566op/s; +1689370.387op/s] or [+9.121%; +9.259%]

scenario:credit_card/is_card_number_no_luhn/37828224631000521389798

  • 🟩 execution_time [-7.226µs; -7.210µs] or [-13.839%; -13.808%]
  • 🟩 throughput [+3068678.048op/s; +3075864.322op/s] or [+16.022%; +16.060%]

scenario:credit_card/is_card_number_no_luhn/x371413321323331

  • 🟩 execution_time [-339.332ns; -335.656ns] or [-5.621%; -5.560%]
  • 🟩 throughput [+9756414.420op/s; +9857461.422op/s] or [+5.890%; +5.951%]

scenario:normalization/normalize_name/normalize_name/good

  • 🟥 execution_time [+462.366ns; +496.243ns] or [+4.597%; +4.934%]
  • 🟥 throughput [-4668382.191op/s; -4369288.915op/s] or [-4.696%; -4.395%]

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 e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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 157.191µs 158.219µs ± 0.270µs 158.207µs ± 0.103µs 158.312µs 158.608µs 158.875µs 159.958µs 1.11% 1.631 10.608 0.17% 0.019µ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 [158.182µs; 158.257µs] or [-0.024%; +0.024%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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 8.137ms 8.158ms ± 0.009ms 8.156ms ± 0.005ms 8.162ms 8.173ms 8.185ms 8.213ms 0.70% 1.664 6.259 0.12% 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 [8.156ms; 8.159ms] or [-0.016%; +0.016%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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.340ms 14.422ms ± 0.034ms 14.423ms ± 0.016ms 14.437ms 14.474ms 14.540ms 14.618ms 1.36% 1.639 6.909 0.24% 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.418ms; 14.427ms] or [-0.033%; +0.033%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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 62.029ms 62.571ms ± 1.924ms 62.321ms ± 0.140ms 62.436ms 62.723ms 71.704ms 84.814ms 36.09% 9.268 94.901 3.07% 0.136ms 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.304ms; 62.838ms] or [-0.426%; +0.426%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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.115µs 185.608µs ± 0.287µs 185.631µs ± 0.201µs 185.797µs 185.985µs 186.095µs 187.623µs 1.07% 1.587 10.375 0.15% 0.020µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5329829.148op/s 5387715.374op/s ± 8317.100op/s 5387033.075op/s ± 5832.346op/s 5394144.596op/s 5399590.922op/s 5401626.450op/s 5402050.294op/s 0.28% -1.542 9.994 0.15% 588.108op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.886µs 17.986µs ± 0.048µs 17.988µs ± 0.029µs 18.015µs 18.055µs 18.071µs 18.309µs 1.78% 1.362 9.125 0.26% 0.003µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 54618649.377op/s 55598431.458op/s ± 146799.883op/s 55591162.975op/s ± 90208.658op/s 55686335.274op/s 55833478.323op/s 55889554.876op/s 55910779.551op/s 0.57% -1.290 8.580 0.26% 10380.319op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.424µs 10.538µs ± 0.100µs 10.529µs ± 0.028µs 10.559µs 10.599µs 10.682µs 11.810µs 12.17% 10.257 127.406 0.95% 0.007µs 1 200
normalization/normalize_name/normalize_name/good throughput 84670995.013op/s 94903330.374op/s ± 826452.449op/s 94972407.573op/s ± 249730.166op/s 95214369.536op/s 95609976.882op/s 95901505.676op/s 95935765.512op/s 1.01% -9.568 115.883 0.87% 58439.013op/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.568µs; 185.648µs] or [-0.021%; +0.021%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5386562.704op/s; 5388868.045op/s] or [-0.021%; +0.021%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.980µs; 17.993µs] or [-0.037%; +0.037%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55578086.406op/s; 55618776.510op/s] or [-0.037%; +0.037%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.524µs; 10.552µs] or [-0.132%; +0.132%] None None None
normalization/normalize_name/normalize_name/good throughput [94788792.013op/s; 95017868.735op/s] or [-0.121%; +0.121%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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 241.187ns 251.400ns ± 12.261ns 245.780ns ± 2.307ns 254.693ns 277.906ns 288.183ns 289.986ns 17.99% 1.576 1.172 4.86% 0.867ns 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.701ns; 253.099ns] or [-0.676%; +0.676%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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 533.842µs 534.858µs ± 0.945µs 534.678µs ± 0.282µs 534.972µs 536.191µs 537.803µs 544.203µs 1.78% 5.601 47.624 0.18% 0.067µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1837548.598op/s 1869659.247op/s ± 3272.831op/s 1870286.191op/s ± 986.323op/s 1871252.387op/s 1872342.963op/s 1872619.529op/s 1873212.803op/s 0.16% -5.505 46.268 0.17% 231.424op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 380.052µs 380.722µs ± 0.328µs 380.712µs ± 0.236µs 380.923µs 381.214µs 381.669µs 382.025µs 0.35% 0.586 0.842 0.09% 0.023µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2617627.949op/s 2626590.764op/s ± 2259.205op/s 2626660.121op/s ± 1629.255op/s 2628355.753op/s 2629964.905op/s 2630693.057op/s 2631215.575op/s 0.17% -0.579 0.825 0.09% 159.750op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 189.928µs 190.305µs ± 0.169µs 190.283µs ± 0.116µs 190.425µs 190.629µs 190.727µs 190.798µs 0.27% 0.509 -0.001 0.09% 0.012µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5241145.085op/s 5254736.422op/s ± 4668.571op/s 5255332.697op/s ± 3194.004op/s 5258290.074op/s 5261143.644op/s 5263829.819op/s 5265139.605op/s 0.19% -0.504 -0.007 0.09% 330.118op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.843µs 37.037µs ± 0.124µs 37.020µs ± 0.113µs 37.152µs 37.227µs 37.268µs 37.282µs 0.71% 0.215 -1.374 0.33% 0.009µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26822929.692op/s 27000545.115op/s ± 90167.898op/s 27012453.818op/s ± 82862.885op/s 27080925.215op/s 27118519.048op/s 27131440.761op/s 27142232.643op/s 0.48% -0.209 -1.378 0.33% 6375.833op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.956µs 46.091µs ± 0.044µs 46.087µs ± 0.028µs 46.116µs 46.157µs 46.219µs 46.266µs 0.39% 0.614 1.507 0.10% 0.003µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21613941.857op/s 21696320.646op/s ± 20667.431op/s 21698273.216op/s ± 13399.925op/s 21710272.555op/s 21725032.779op/s 21735383.988op/s 21759844.335op/s 0.28% -0.605 1.487 0.10% 1461.408op/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 [534.727µs; 534.989µs] or [-0.024%; +0.024%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1869205.664op/s; 1870112.830op/s] or [-0.024%; +0.024%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [380.677µs; 380.767µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2626277.660op/s; 2626903.868op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [190.281µs; 190.328µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5254089.403op/s; 5255383.441op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.020µs; 37.054µs] or [-0.046%; +0.046%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26988048.711op/s; 27013041.518op/s] or [-0.046%; +0.046%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.085µs; 46.097µs] or [-0.013%; +0.013%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21693456.339op/s; 21699184.953op/s] or [-0.013%; +0.013%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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.381µs 2.436µs ± 0.018µs 2.435µs ± 0.006µs 2.441µs 2.473µs 2.481µs 2.483µs 1.97% 0.103 1.896 0.72% 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.433µs; 2.438µs] or [-0.100%; +0.100%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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 88.956µs 89.244µs ± 0.267µs 89.221µs ± 0.100µs 89.329µs 89.448µs 89.512µs 92.558µs 3.74% 9.642 117.460 0.30% 0.019µ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 [89.208µs; 89.281µs] or [-0.041%; +0.041%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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.215µs 3.207µs ± 1.460µs 3.028µs ± 0.020µs 3.046µs 3.399µs 13.974µs 15.426µs 409.49% 7.487 56.724 45.41% 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.004µs; 3.409µs] or [-6.309%; +6.309%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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 33.657µs 34.106µs ± 0.749µs 33.769µs ± 0.041µs 33.831µs 35.670µs 35.727µs 37.482µs 11.00% 1.863 2.186 2.19% 0.053µ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.003µs; 34.210µs] or [-0.304%; +0.304%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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.944µs 5.017µs ± 0.040µs 5.026µs ± 0.035µs 5.053µs 5.070µs 5.074µs 5.084µs 1.15% -0.246 -1.433 0.80% 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.012µs; 5.023µs] or [-0.111%; +0.111%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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.898µs 3.912µs ± 0.003µs 3.911µs ± 0.002µs 3.913µs 3.917µs 3.918µs 3.920µs 0.23% -0.038 1.911 0.07% 0.000µs 1 200
credit_card/is_card_number/ throughput 255075407.291op/s 255646615.196op/s ± 188171.281op/s 255673658.862op/s ± 115546.695op/s 255775471.132op/s 255889391.126op/s 255961419.161op/s 256547270.891op/s 0.34% 0.047 1.938 0.07% 13305.719op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 77.621µs 78.757µs ± 0.492µs 78.763µs ± 0.339µs 79.081µs 79.597µs 79.911µs 79.975µs 1.54% 0.164 -0.352 0.62% 0.035µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12503886.706op/s 12697824.119op/s ± 79288.217op/s 12696245.105op/s ± 54881.739op/s 12757389.046op/s 12824136.059op/s 12865140.436op/s 12883124.496op/s 1.47% -0.134 -0.365 0.62% 5606.524op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 70.785µs 71.297µs ± 0.291µs 71.239µs ± 0.167µs 71.452µs 71.829µs 71.960µs 71.989µs 1.05% 0.422 -0.555 0.41% 0.021µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13891026.180op/s 14025992.162op/s ± 57220.459op/s 14037159.932op/s ± 32963.569op/s 14063247.461op/s 14112592.173op/s 14121087.090op/s 14127211.835op/s 0.64% -0.407 -0.570 0.41% 4046.097op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.893µs 3.912µs ± 0.003µs 3.913µs ± 0.002µs 3.914µs 3.917µs 3.919µs 3.919µs 0.17% -1.089 6.517 0.08% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 255147707.273op/s 255600777.405op/s ± 203332.722op/s 255577667.762op/s ± 129272.693op/s 255731793.856op/s 255895335.199op/s 255947107.912op/s 256881449.161op/s 0.51% 1.107 6.635 0.08% 14377.795op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 67.869µs 68.543µs ± 0.296µs 68.509µs ± 0.191µs 68.702µs 69.070µs 69.401µs 69.465µs 1.40% 0.507 0.061 0.43% 0.021µs 1 200
credit_card/is_card_number/378282246310005 throughput 14395782.864op/s 14589634.432op/s ± 62943.628op/s 14596723.768op/s ± 40567.637op/s 14632917.251op/s 14681636.211op/s 14693047.880op/s 14734237.746op/s 0.94% -0.484 0.022 0.43% 4450.787op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 44.924µs 44.984µs ± 0.033µs 44.976µs ± 0.020µs 45.004µs 45.041µs 45.077µs 45.143µs 0.37% 1.123 2.400 0.07% 0.002µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 22151612.990op/s 22230257.984op/s ± 16415.917op/s 22233883.103op/s ± 10120.609op/s 22241153.248op/s 22251111.638op/s 22258420.603op/s 22259649.933op/s 0.12% -1.116 2.370 0.07% 1160.781op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 5.692µs 5.698µs ± 0.006µs 5.697µs ± 0.003µs 5.700µs 5.704µs 5.706µs 5.759µs 1.08% 6.683 70.177 0.10% 0.000µs 1 200
credit_card/is_card_number/x371413321323331 throughput 173650191.337op/s 175508236.422op/s ± 170268.325op/s 175528892.056op/s ± 84952.604op/s 175613033.329op/s 175658320.855op/s 175689537.739op/s 175700579.782op/s 0.10% -6.603 69.001 0.10% 12039.789op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.893µs 3.911µs ± 0.003µs 3.911µs ± 0.002µs 3.913µs 3.916µs 3.917µs 3.920µs 0.21% -0.885 6.171 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255117490.235op/s 255662950.766op/s ± 192643.962op/s 255661893.595op/s ± 124924.114op/s 255788029.452op/s 255925939.097op/s 255994363.054op/s 256859644.236op/s 0.47% 0.902 6.278 0.08% 13621.985op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 60.494µs 61.330µs ± 0.236µs 61.328µs ± 0.119µs 61.450µs 61.689µs 61.832µs 62.570µs 2.02% 0.338 3.738 0.38% 0.017µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15982136.090op/s 16305487.933op/s ± 62561.688op/s 16305772.246op/s ± 31518.132op/s 16336223.132op/s 16411103.995op/s 16453373.843op/s 16530682.366op/s 1.38% -0.274 3.538 0.38% 4423.779op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 53.350µs 53.707µs ± 0.123µs 53.723µs ± 0.071µs 53.797µs 53.865µs 53.914µs 53.964µs 0.45% -0.757 0.126 0.23% 0.009µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18531035.868op/s 18619753.064op/s ± 42860.166op/s 18613852.300op/s ± 24761.526op/s 18638382.440op/s 18710341.215op/s 18724839.492op/s 18743978.998op/s 0.70% 0.767 0.141 0.23% 3030.671op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.894µs 3.911µs ± 0.003µs 3.911µs ± 0.002µs 3.913µs 3.917µs 3.919µs 3.919µs 0.20% -0.592 6.034 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255165428.427op/s 255662842.116op/s ± 186196.833op/s 255681156.311op/s ± 116839.901op/s 255781485.588op/s 255888961.204op/s 255946047.847op/s 256800467.041op/s 0.44% 0.609 6.131 0.07% 13166.104op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 49.874µs 50.195µs ± 0.151µs 50.209µs ± 0.091µs 50.288µs 50.424µs 50.623µs 50.729µs 1.04% 0.198 0.427 0.30% 0.011µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 19712732.266op/s 19922401.821op/s ± 60033.443op/s 19916910.632op/s ± 35855.993op/s 19961231.795op/s 20025739.784op/s 20038819.670op/s 20050553.460op/s 0.67% -0.176 0.387 0.30% 4245.005op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 44.928µs 44.995µs ± 0.044µs 44.987µs ± 0.024µs 45.015µs 45.067µs 45.098µs 45.302µs 0.70% 2.133 10.890 0.10% 0.003µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 22074264.160op/s 22224659.693op/s ± 21571.791op/s 22228814.445op/s ± 11947.620op/s 22239080.487op/s 22251332.442op/s 22257237.193op/s 22257883.633op/s 0.13% -2.109 10.675 0.10% 1525.356op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 5.690µs 5.700µs ± 0.004µs 5.700µs ± 0.003µs 5.702µs 5.707µs 5.708µs 5.712µs 0.21% 0.062 -0.055 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 175074286.931op/s 175444213.462op/s ± 127461.817op/s 175440095.126op/s ± 78674.338op/s 175531823.444op/s 175661039.577op/s 175707865.687op/s 175761841.504op/s 0.18% -0.058 -0.057 0.07% 9012.912op/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.911µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/ throughput [255620536.466op/s; 255672693.926op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [78.688µs; 78.825µs] or [-0.087%; +0.087%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12686835.535op/s; 12708812.703op/s] or [-0.087%; +0.087%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [71.257µs; 71.338µs] or [-0.057%; +0.057%] None None None
credit_card/is_card_number/ 378282246310005 throughput [14018061.956op/s; 14033922.367op/s] or [-0.057%; +0.057%] None None None
credit_card/is_card_number/37828224631 execution_time [3.912µs; 3.913µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/37828224631 throughput [255572597.446op/s; 255628957.365op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/378282246310005 execution_time [68.502µs; 68.584µs] or [-0.060%; +0.060%] None None None
credit_card/is_card_number/378282246310005 throughput [14580911.051op/s; 14598357.814op/s] or [-0.060%; +0.060%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [44.979µs; 44.988µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [22227982.896op/s; 22232533.072op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/x371413321323331 execution_time [5.697µs; 5.699µs] or [-0.014%; +0.014%] None None None
credit_card/is_card_number/x371413321323331 throughput [175484638.870op/s; 175531833.974op/s] or [-0.013%; +0.013%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.911µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ throughput [255636252.166op/s; 255689649.367op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [61.297µs; 61.363µs] or [-0.053%; +0.053%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [16296817.484op/s; 16314158.381op/s] or [-0.053%; +0.053%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [53.690µs; 53.724µs] or [-0.032%; +0.032%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18613813.058op/s; 18625693.071op/s] or [-0.032%; +0.032%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.911µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255637037.026op/s; 255688647.206op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [50.174µs; 50.216µs] or [-0.042%; +0.042%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [19914081.763op/s; 19930721.879op/s] or [-0.042%; +0.042%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [44.989µs; 45.001µs] or [-0.013%; +0.013%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [22221670.050op/s; 22227649.336op/s] or [-0.013%; +0.013%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [5.699µs; 5.700µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [175426548.481op/s; 175461878.444op/s] or [-0.010%; +0.010%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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.982µs 26.018µs ± 10.079µs 18.200µs ± 0.133µs 35.001µs 44.901µs 51.295µs 68.829µs 278.18% 0.951 0.365 38.64% 0.713µ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.621µs; 27.415µs] or [-5.369%; +5.369%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e6d47ef 1758820685 gyuheon0h/prof-1250-unix-comm-docs
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.220ms 6.275ms ± 0.025ms 6.272ms ± 0.013ms 6.286ms 6.306ms 6.344ms 6.452ms 2.87% 2.395 13.522 0.40% 0.002ms 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.271ms; 6.278ms] or [-0.055%; +0.055%] None None None

Baseline

Omitted due to size.

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Sep 23, 2025

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

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

@codecov-commenter
Copy link

codecov-commenter commented Sep 23, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 71.63%. Comparing base (0cc3f7f) to head (4980849).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1239      +/-   ##
==========================================
- Coverage   71.69%   71.63%   -0.06%     
==========================================
  Files         354      355       +1     
  Lines       56138    56316     +178     
==========================================
+ Hits        40247    40343      +96     
- Misses      15891    15973      +82     
Components Coverage Δ
datadog-crashtracker 49.33% <ø> (+0.02%) ⬆️
datadog-crashtracker-ffi 5.93% <ø> (ø)
datadog-alloc 98.73% <ø> (ø)
data-pipeline 90.41% <ø> (+0.10%) ⬆️
data-pipeline-ffi 88.19% <ø> (ø)
ddcommon 84.29% <ø> (ø)
ddcommon-ffi 73.84% <ø> (ø)
ddtelemetry 60.02% <ø> (ø)
ddtelemetry-ffi 21.24% <ø> (ø)
dogstatsd-client 83.26% <ø> (ø)
datadog-ipc 82.39% <ø> (ø)
datadog-profiling 76.90% <ø> (ø)
datadog-profiling-ffi 62.12% <ø> (ø)
datadog-sidecar 37.08% <ø> (ø)
datdog-sidecar-ffi 11.37% <ø> (ø)
spawn-worker 55.35% <ø> (ø)
tinybytes 92.22% <ø> (ø)
datadog-trace-normalization 98.24% <ø> (+<0.01%) ⬆️
datadog-trace-obfuscation 94.17% <ø> (+<0.01%) ⬆️
datadog-trace-protobuf 59.65% <ø> (-17.45%) ⬇️
datadog-trace-utils 89.77% <ø> (+0.01%) ⬆️
datadog-tracer-flare 54.52% <ø> (ø)
datadog-log 76.31% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Contributor

@gleocadie gleocadie left a comment

Choose a reason for hiding this comment

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

Good idea to have such doc.
I do not want to be picky, but copying code (or having filename + line numbers) into the doc can be burden if tomorrow we change the code (and the code will change). We might forget to change it.


**File**: `datadog-crashtracker/src/receiver/entry_points.rs:97-119`

```rust
Copy link
Contributor

Choose a reason for hiding this comment

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

I wonder if we need to add the code: if tomorrow the code changes, it means we have to change the doc.

Copy link
Contributor

Choose a reason for hiding this comment

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

Assuming it's not too complicated, you can put it all in rustdoc instead of .MD and have the code compile.

@gyuheon0h gyuheon0h requested a review from gleocadie September 24, 2025 13:36
@gyuheon0h gyuheon0h changed the title [crashtracking] add doc to outline UNIX communication [crashtracking] add doc to outline UNIX pipe communication Sep 24, 2025
@gyuheon0h gyuheon0h force-pushed the gyuheon0h/prof-1250-unix-comm-docs branch from 4980849 to e6d47ef Compare September 25, 2025 17:18
Copy link
Contributor

@danielsn danielsn left a comment

Choose a reason for hiding this comment

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

Thanks for doing this. I'm part way through the review, but one overall comment so far: a bunch of this seems fairly repetitive.

Comment on lines +20 to +28
//! ┌─────────────────────┐ ┌──────────────────────┐
//! │ Signal Handler │ │ Collector Process │
//! │ (Original Process) │ │ (Forked Child) │
//! │ │ │ │
//! │ 1. Catch crash │────fork()──────────►│ 2. Setup stdio │
//! │ 2. Fork collector │ │ 3. Create UnixStream │
//! │ 3. Wait for child │ │ 4. Write crash data │
//! │ │◄────wait()──────────│ 5. Exit cleanly │
//! └─────────────────────┘ └──────────────────────┘
Copy link
Contributor

Choose a reason for hiding this comment

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

Should you line up the fork and wait arrows with the lines of code the represent?

Comment on lines +77 to +83
/// ┌─────────────────────────────┐ ┌─────────────────────────────┐
/// │ 1. Catches crash signal │ │ 4. Closes stdio (0,1,2) │
/// │ 2. Forks collector process │──►│ 5. Disables SIGPIPE │
/// │ 3. Returns to caller │ │ 6. Creates UnixStream │
/// │ │ │ 7. Calls emit_crashreport() │
/// │ │ │ 8. Exits with _exit(0) │
/// └─────────────────────────────┘ └─────────────────────────────┘
Copy link
Contributor

Choose a reason for hiding this comment

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

The interleaving of steps here is a little confusing. Can we have whitespace to indicate which steps are concurrent?

};

// Emit crashreport
// Create Unix socket stream for crash data transmission
Copy link
Contributor

Choose a reason for hiding this comment

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

nice catch

//! 1. **Section Delimiters**: Uses constants from [`crate::shared::constants`] to mark boundaries
//! 2. **Structured Data**: Writes JSON, text, or binary data within sections
//! 3. **Immediate Flushing**: Flushes each section to ensure data integrity
//! 4. **Completion Marker**: Ends transmission with `DD_CRASHTRACK_DONE`
Copy link
Contributor

Choose a reason for hiding this comment

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

I found this a little confusing, because the delimiters wrap the structured data, but the list here makes them seem like they only come before.

//!
//! ### Key Sections
//!
//! - **Stack Trace** (`emit_backtrace_by_frames`): Stack frames with optional symbol resolution
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we still resolve symbols in process?

Copy link
Contributor

Choose a reason for hiding this comment

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

we can pass a configuration to allow this.

///
/// ## Section Emission Order
///
/// The crash report is written in this specific order:
Copy link
Contributor

Choose a reason for hiding this comment

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

Are we making this contractural? I'd say this is an implementation detail. The key part is that we try to emit more critical bits of info first, and bits that are more likely to crash last. Bits that are both critical and likely to crash are ¯\_(ツ)_/¯

Comment on lines +17 to +22
//! ┌─────────────────┐ socketpair() ┌─────────────────┐
//! │ Collector │◄───────────────────►│ Receiver │
//! │ (Crashing proc) │ │ (Fork+execve) │
//! │ │ Write End │ │
//! │ uds_parent ────────────────────────────────► stdin (fd=0) │
//! └─────────────────┘ └─────────────────┘
Copy link
Contributor

Choose a reason for hiding this comment

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

fix formatting

Comment on lines +257 to +258
/// This function never returns - it either successfully executes the receiver binary
/// or terminates the process.
Copy link
Contributor

Choose a reason for hiding this comment

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

I found this confusing

@gyuheon0h gyuheon0h marked this pull request as draft September 26, 2025 13:28
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