Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build standalone trimmed version for net7.0 #4727

Merged
merged 3 commits into from
Nov 10, 2023

Conversation

tonyredondo
Copy link
Member

@tonyredondo tonyredondo commented Oct 13, 2023

Summary of changes

Update the self-container dd-trace too to compile against .NET 7 instead of .NET Core 3.1

Reason for change

We currently do a standalone-compile with .NET Core 3.1 for the dd-trace tool. However, the .NET Core 3.1 runtime depends on libintl, which has been removed from the lastest .NET 8 alpine packages, which means we crash on startup there now.

Implementation details

libintl was a dependency on the runtime prior to .NET 5, but in .NET 5 it was removed. If you attempt to load the .NET Core 3.1 runtime in an environment without the package, you'll get an error Error loading shared library libintl.so.8.

Given this is a runtime-level issue, the best we can do is use a different runtime. The difficultly is that we were previously targeting .NET Core 3.1 due to issues with trimming. Basically, the dd-trace tool is very unfriendly to the trimmer.

To workaround those issues, this PR updates the linker to use .NET 7, but then copies a bunch of our dependencies directly to the output without trimming.

We're using copyused for this, though that is apparently unsupported in .NET 7, which implies it may not work as we expect...

Test coverage

It works in CI... I did a "full" installer run too, and confirm it now works on the previously broken alpine 3.18 image

Other details

We could target .NET 5 instead. Maybe that's safer?

@tonyredondo tonyredondo self-assigned this Oct 13, 2023
@github-actions github-actions bot added the area:builds project files, build scripts, pipelines, versioning, releases, packages label Oct 13, 2023
@andrewlock
Copy link
Member

andrewlock commented Oct 13, 2023

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing the following branches/commits:

Execution-time benchmarks measure the whole time it takes to execute a program. And are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are shown in red. The following thresholds were used for comparing the execution times:

  • Welch test with statistical test for significance of 5%
  • Only results indicating a difference greater than 5% and 5 ms are considered.

Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.

Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).

gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.6.2) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (4727) - mean (72ms)  : 63, 81
     .   : milestone, 72,
    master - mean (71ms)  : 63, 80
     .   : milestone, 71,

    section CallTarget+Inlining+NGEN
    This PR (4727) - mean (1,005ms)  : 974, 1036
     .   : milestone, 1005,
    master - mean (1,002ms)  : 988, 1016
     .   : milestone, 1002,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (4727) - mean (107ms)  : 104, 109
     .   : milestone, 107,
    master - mean (106ms)  : 103, 109
     .   : milestone, 106,

    section CallTarget+Inlining+NGEN
    This PR (4727) - mean (698ms)  : 660, 737
     .   : milestone, 698,
    master - mean (689ms)  : 669, 709
     .   : milestone, 689,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (4727) - mean (91ms)  : 88, 95
     .   : milestone, 91,
    master - mean (91ms)  : 88, 93
     .   : milestone, 91,

    section CallTarget+Inlining+NGEN
    This PR (4727) - mean (668ms)  : 646, 689
     .   : milestone, 668,
    master - mean (660ms)  : 633, 688
     .   : milestone, 660,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (4727) - mean (190ms)  : 178, 203
     .   : milestone, 190,
    master - mean (187ms)  : 185, 189
     .   : milestone, 187,

    section CallTarget+Inlining+NGEN
    This PR (4727) - mean (1,101ms)  : 1078, 1123
     .   : milestone, 1101,
    master - mean (1,103ms)  : 1080, 1126
     .   : milestone, 1103,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (4727) - mean (272ms)  : 268, 277
     .   : milestone, 272,
    master - mean (275ms)  : 268, 282
     .   : milestone, 275,

    section CallTarget+Inlining+NGEN
    This PR (4727) - mean (1,055ms)  : 1035, 1075
     .   : milestone, 1055,
    master - mean (1,054ms)  : 1030, 1078
     .   : milestone, 1054,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (4727) - mean (262ms)  : 259, 265
     .   : milestone, 262,
    master - mean (262ms)  : 258, 266
     .   : milestone, 262,

    section CallTarget+Inlining+NGEN
    This PR (4727) - mean (1,022ms)  : 993, 1051
     .   : milestone, 1022,
    master - mean (1,022ms)  : 999, 1045
     .   : milestone, 1022,

Loading

@datadog-ddstaging
Copy link

datadog-ddstaging bot commented Oct 13, 2023

Datadog Report

Branch report: tony/dd-trace-standalone-trimming-net70
Commit report: 7d9651f

dd-trace-dotnet: 0 Failed, 0 New Flaky, 301806 Passed, 994 Skipped, 30m 30.14s Wall Time

@andrewlock
Copy link
Member

andrewlock commented Oct 13, 2023

Benchmarks Report 🐌

Benchmarks for #4727 compared to master:

  • 1 benchmarks are faster, with geometric mean 1.166
  • 1 benchmarks are slower, with geometric mean 1.423
  • 1 benchmarks have more allocations

The following thresholds were used for comparing the benchmark speeds:

  • Mann–Whitney U test with statistical test for significance of 5%
  • Only results indicating a difference greater than 10% and 0.3 ns are considered.

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.ActivityBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 8.3μs 47.8ns 374ns 0.0239 0.0119 0 7.29 KB
master StartStopWithChild netcoreapp3.1 10.1μs 53.2ns 286ns 0.0352 0.0201 0.00503 7.38 KB
master StartStopWithChild net472 15.7μs 35.7ns 138ns 1.29 0.336 0.109 7.65 KB
#4727 StartStopWithChild net6.0 7.99μs 37.7ns 156ns 0.0234 0.0117 0 7.29 KB
#4727 StartStopWithChild netcoreapp3.1 10.1μs 49.4ns 215ns 0.0253 0.0101 0 7.39 KB
#4727 StartStopWithChild net472 15.8μs 65.9ns 255ns 1.29 0.317 0.103 7.66 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 468μs 258ns 1μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 655μs 2.51μs 9.73μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 793μs 699ns 2.71μs 0.396 0 0 3.3 KB
#4727 WriteAndFlushEnrichedTraces net6.0 469μs 458ns 1.77μs 0 0 0 2.7 KB
#4727 WriteAndFlushEnrichedTraces netcoreapp3.1 623μs 316ns 1.22μs 0 0 0 2.7 KB
#4727 WriteAndFlushEnrichedTraces net472 817μs 369ns 1.38μs 0.408 0 0 3.3 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #4727

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody‑net6.0 1.423 129.71 184.54

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 43.7μs 28.2ns 109ns 0.0219 0 0 2.02 KB
master AllCycleSimpleBody netcoreapp3.1 46.7μs 147ns 570ns 0.0228 0 0 2 KB
master AllCycleSimpleBody net472 47.8μs 133ns 517ns 0.306 0 0 2.07 KB
master AllCycleMoreComplexBody net6.0 206μs 160ns 618ns 0.104 0 0 8.37 KB
master AllCycleMoreComplexBody netcoreapp3.1 211μs 120ns 448ns 0.105 0 0 8.26 KB
master AllCycleMoreComplexBody net472 213μs 77.8ns 301ns 1.27 0 0 8.43 KB
master ObjectExtractorSimpleBody net6.0 130ns 0.0763ns 0.296ns 0.00396 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 182ns 0.08ns 0.31ns 0.00368 0 0 272 B
master ObjectExtractorSimpleBody net472 157ns 0.0786ns 0.283ns 0.0446 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 2.84μs 1.25ns 4.68ns 0.0525 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 3.71μs 2.18ns 8.43ns 0.0502 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 3.52μs 3.12ns 12.1ns 0.602 0.00528 0 3.8 KB
#4727 AllCycleSimpleBody net6.0 45.1μs 64.8ns 251ns 0.0226 0 0 2.02 KB
#4727 AllCycleSimpleBody netcoreapp3.1 45.2μs 63.2ns 245ns 0.0226 0 0 2 KB
#4727 AllCycleSimpleBody net472 46.7μs 81.3ns 315ns 0.326 0 0 2.07 KB
#4727 AllCycleMoreComplexBody net6.0 204μs 109ns 421ns 0.102 0 0 8.37 KB
#4727 AllCycleMoreComplexBody netcoreapp3.1 208μs 132ns 512ns 0.104 0 0 8.26 KB
#4727 AllCycleMoreComplexBody net472 212μs 205ns 796ns 1.27 0 0 8.43 KB
#4727 ObjectExtractorSimpleBody net6.0 185ns 0.0723ns 0.28ns 0.00397 0 0 280 B
#4727 ObjectExtractorSimpleBody netcoreapp3.1 191ns 0.127ns 0.491ns 0.00374 0 0 272 B
#4727 ObjectExtractorSimpleBody net472 155ns 0.132ns 0.513ns 0.0446 0 0 281 B
#4727 ObjectExtractorMoreComplexBody net6.0 2.74μs 1.28ns 4.8ns 0.0535 0 0 3.78 KB
#4727 ObjectExtractorMoreComplexBody netcoreapp3.1 3.63μs 2.32ns 8.98ns 0.0508 0 0 3.69 KB
#4727 ObjectExtractorMoreComplexBody net472 3.53μs 1.58ns 5.91ns 0.602 0.00529 0 3.8 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWaf(args=NestedMap (10)) net6.0 12.9μs 4.1ns 14.8ns 0.135 0 0 9.42 KB
master RunWaf(args=NestedMap (10)) netcoreapp3.1 19.8μs 6.02ns 22.5ns 0.119 0 0 9.41 KB
master RunWaf(args=NestedMap (10)) net472 30.3μs 13.4ns 50ns 1.5 0.0151 0 9.47 KB
master RunWafWithAttack(args=Neste(...)tack) [22]) net6.0 77.4μs 25.1ns 97.3ns 0.228 0 0 15.76 KB
master RunWafWithAttack(args=Neste(...)tack) [22]) netcoreapp3.1 87μs 175ns 678ns 0.173 0 0 15.71 KB
master RunWafWithAttack(args=Neste(...)tack) [22]) net472 98.4μs 77ns 298ns 2.54 0 0 16.03 KB
master RunWaf(args=NestedMap (100)) net6.0 24.3μs 7.8ns 29.2ns 0.271 0 0 19.66 KB
master RunWaf(args=NestedMap (100)) netcoreapp3.1 39.1μs 16.8ns 65ns 0.274 0 0 20.41 KB
master RunWaf(args=NestedMap (100)) net472 57.3μs 29.4ns 106ns 3.26 0.0572 0 20.62 KB
master RunWafWithAttack(args=Neste(...)tack) [23]) net6.0 91.8μs 87.6ns 339ns 0.366 0 0 26 KB
master RunWafWithAttack(args=Neste(...)tack) [23]) netcoreapp3.1 110μs 137ns 495ns 0.326 0 0 26.71 KB
master RunWafWithAttack(args=Neste(...)tack) [23]) net472 129μs 49.9ns 180ns 4.32 0.0644 0 27.18 KB
master RunWaf(args=NestedMap (20)) net6.0 24μs 4.66ns 16.8ns 0.265 0 0 19.39 KB
master RunWaf(args=NestedMap (20)) netcoreapp3.1 38.8μs 11.6ns 45ns 0.272 0 0 19.83 KB
master RunWaf(args=NestedMap (20)) net472 56.5μs 14.8ns 57.4ns 3.16 0.0564 0 20.03 KB
master RunWafWithAttack(args=Neste(...)tack) [22]) net6.0 90.5μs 33.9ns 127ns 0.362 0 0 25.74 KB
master RunWafWithAttack(args=Neste(...)tack) [22]) netcoreapp3.1 109μs 48.6ns 182ns 0.328 0 0 26.14 KB
master RunWafWithAttack(args=Neste(...)tack) [22]) net472 130μs 159ns 615ns 4.2 0.0646 0 26.59 KB
#4727 RunWaf(args=NestedMap (10)) net6.0 12.9μs 5.8ns 22.4ns 0.129 0 0 9.42 KB
#4727 RunWaf(args=NestedMap (10)) netcoreapp3.1 20.2μs 6.66ns 24ns 0.121 0 0 9.41 KB
#4727 RunWaf(args=NestedMap (10)) net472 29.7μs 12ns 45.1ns 1.5 0 0 9.47 KB
#4727 RunWafWithAttack(args=Neste(...)tack) [22]) net6.0 76.6μs 40.6ns 152ns 0.23 0 0 15.76 KB
#4727 RunWafWithAttack(args=Neste(...)tack) [22]) netcoreapp3.1 86.8μs 60.4ns 209ns 0.214 0 0 15.71 KB
#4727 RunWafWithAttack(args=Neste(...)tack) [22]) net472 99.2μs 225ns 870ns 2.55 0 0 16.03 KB
#4727 RunWaf(args=NestedMap (100)) net6.0 24.5μs 10.3ns 39.8ns 0.269 0 0 19.66 KB
#4727 RunWaf(args=NestedMap (100)) netcoreapp3.1 39.3μs 9.43ns 34ns 0.275 0 0 20.41 KB
#4727 RunWaf(args=NestedMap (100)) net472 56.8μs 8.64ns 29.9ns 3.26 0.0567 0 20.62 KB
#4727 RunWafWithAttack(args=Neste(...)tack) [23]) net6.0 92μs 128ns 496ns 0.365 0 0 26 KB
#4727 RunWafWithAttack(args=Neste(...)tack) [23]) netcoreapp3.1 110μs 169ns 653ns 0.328 0 0 26.71 KB
#4727 RunWafWithAttack(args=Neste(...)tack) [23]) net472 130μs 75.4ns 292ns 4.31 0.0644 0 27.18 KB
#4727 RunWaf(args=NestedMap (20)) net6.0 24.2μs 23.7ns 88.5ns 0.269 0 0 19.39 KB
#4727 RunWaf(args=NestedMap (20)) netcoreapp3.1 38.6μs 13.1ns 50.8ns 0.27 0 0 19.83 KB
#4727 RunWaf(args=NestedMap (20)) net472 56.4μs 25.1ns 97.2ns 3.17 0.0562 0 20.03 KB
#4727 RunWafWithAttack(args=Neste(...)tack) [22]) net6.0 90.7μs 32.5ns 126ns 0.361 0 0 25.74 KB
#4727 RunWafWithAttack(args=Neste(...)tack) [22]) netcoreapp3.1 108μs 107ns 385ns 0.325 0 0 26.14 KB
#4727 RunWafWithAttack(args=Neste(...)tack) [22]) net472 129μs 204ns 790ns 4.16 0.064 0 26.59 KB
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 170μs 190ns 737ns 0.17 0 0 18.04 KB
master SendRequest netcoreapp3.1 190μs 374ns 1.45μs 0.188 0 0 20.2 KB
master SendRequest net472 6.43E‑05ns 6.43E‑05ns 0.000249ns 0 0 0 0 b
#4727 SendRequest net6.0 167μs 135ns 523ns 0.25 0 0 18.04 KB
#4727 SendRequest netcoreapp3.1 189μs 249ns 896ns 0.191 0 0 20.2 KB
#4727 SendRequest net472 0.000128ns 8.69E‑05ns 0.000313ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #4727

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 41.57 KB 41.93 KB 361 B 0.87%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 547μs 300ns 1.12μs 0.561 0 0 41.57 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 659μs 322ns 1.21μs 0.326 0 0 41.7 KB
master WriteAndFlushEnrichedTraces net472 827μs 4.15μs 18.6μs 8.17 2.45 0.408 53.22 KB
#4727 WriteAndFlushEnrichedTraces net6.0 564μs 2.02μs 7.82μs 0.539 0 0 41.93 KB
#4727 WriteAndFlushEnrichedTraces netcoreapp3.1 651μs 262ns 1.01μs 0.322 0 0 41.77 KB
#4727 WriteAndFlushEnrichedTraces net472 828μs 3.06μs 11.8μs 8.28 2.48 0.414 53.23 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.13μs 0.767ns 2.97ns 0.0106 0 0 768 B
master ExecuteNonQuery netcoreapp3.1 1.29μs 0.503ns 1.88ns 0.00989 0 0 768 B
master ExecuteNonQuery net472 1.65μs 2.69ns 9.71ns 0.116 0.000816 0 730 B
#4727 ExecuteNonQuery net6.0 1.07μs 0.674ns 2.61ns 0.0107 0 0 768 B
#4727 ExecuteNonQuery netcoreapp3.1 1.35μs 0.587ns 2.27ns 0.0101 0 0 768 B
#4727 ExecuteNonQuery net472 1.64μs 0.589ns 2.28ns 0.116 0 0 730 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.09μs 0.382ns 1.48ns 0.0135 0 0 936 B
master CallElasticsearch netcoreapp3.1 1.4μs 1.1ns 4.1ns 0.0123 0 0 936 B
master CallElasticsearch net472 2.3μs 0.501ns 1.88ns 0.151 0 0 955 B
master CallElasticsearchAsync net6.0 1.14μs 0.346ns 1.34ns 0.0126 0 0 912 B
master CallElasticsearchAsync netcoreapp3.1 1.43μs 0.543ns 2.03ns 0.0129 0 0 984 B
master CallElasticsearchAsync net472 2.34μs 0.438ns 1.64ns 0.16 0 0 1.01 KB
#4727 CallElasticsearch net6.0 1.19μs 0.574ns 2.15ns 0.0132 0 0 936 B
#4727 CallElasticsearch netcoreapp3.1 1.28μs 0.991ns 3.71ns 0.0122 0 0 936 B
#4727 CallElasticsearch net472 2.32μs 0.604ns 2.34ns 0.151 0 0 955 B
#4727 CallElasticsearchAsync net6.0 1.18μs 0.585ns 2.27ns 0.0124 0 0 912 B
#4727 CallElasticsearchAsync netcoreapp3.1 1.48μs 0.407ns 1.52ns 0.0134 0 0 984 B
#4727 CallElasticsearchAsync net472 2.49μs 3.66ns 14.2ns 0.16 0 0 1.01 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.33μs 0.828ns 3.1ns 0.0126 0 0 912 B
master ExecuteAsync netcoreapp3.1 1.42μs 0.711ns 2.66ns 0.012 0 0 912 B
master ExecuteAsync net472 1.75μs 0.72ns 2.79ns 0.138 0 0 875 B
#4727 ExecuteAsync net6.0 1.26μs 0.832ns 3.11ns 0.0126 0 0 912 B
#4727 ExecuteAsync netcoreapp3.1 1.48μs 4.1ns 15.9ns 0.0118 0 0 912 B
#4727 ExecuteAsync net472 1.74μs 1.42ns 5.48ns 0.139 0 0 875 B
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 3.72μs 2.83ns 11ns 0.0262 0 0 1.9 KB
master SendAsync netcoreapp3.1 4.35μs 2.64ns 9.9ns 0.0326 0 0 2.43 KB
master SendAsync net472 7.13μs 4.31ns 16.7ns 0.472 0 0 2.99 KB
#4727 SendAsync net6.0 3.83μs 2.02ns 7.55ns 0.0268 0 0 1.9 KB
#4727 SendAsync netcoreapp3.1 4.43μs 1.98ns 7.65ns 0.0332 0 0 2.43 KB
#4727 SendAsync net472 6.99μs 2.73ns 10.6ns 0.475 0 0 2.99 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 1.38μs 0.974ns 3.65ns 0.0222 0 0 1.57 KB
master EnrichedLog netcoreapp3.1 1.91μs 0.835ns 3.01ns 0.021 0 0 1.57 KB
master EnrichedLog net472 2.29μs 1.13ns 4.38ns 0.236 0 0 1.49 KB
#4727 EnrichedLog net6.0 1.37μs 0.505ns 1.95ns 0.0216 0 0 1.57 KB
#4727 EnrichedLog netcoreapp3.1 1.82μs 0.845ns 3.16ns 0.0212 0 0 1.57 KB
#4727 EnrichedLog net472 2.14μs 1.15ns 4.31ns 0.237 0 0 1.49 KB
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 111μs 86.6ns 324ns 0.0559 0 0 4.21 KB
master EnrichedLog netcoreapp3.1 116μs 99.3ns 358ns 0.0578 0 0 4.21 KB
master EnrichedLog net472 146μs 85.3ns 319ns 0.654 0.218 0 4.38 KB
#4727 EnrichedLog net6.0 111μs 68.2ns 246ns 0.0559 0 0 4.21 KB
#4727 EnrichedLog netcoreapp3.1 117μs 160ns 618ns 0.0584 0 0 4.21 KB
#4727 EnrichedLog net472 147μs 127ns 492ns 0.661 0.22 0 4.38 KB
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.74μs 0.743ns 2.78ns 0.029 0 0 2.13 KB
master EnrichedLog netcoreapp3.1 3.8μs 1.22ns 4.74ns 0.0285 0 0 2.13 KB
master EnrichedLog net472 4.62μs 1.01ns 3.63ns 0.306 0 0 1.93 KB
#4727 EnrichedLog net6.0 2.87μs 0.804ns 3.01ns 0.0301 0 0 2.13 KB
#4727 EnrichedLog netcoreapp3.1 3.99μs 1.16ns 4.2ns 0.0279 0 0 2.13 KB
#4727 EnrichedLog net472 4.54μs 1.79ns 6.92ns 0.307 0 0 1.93 KB
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 1.36μs 0.834ns 3.23ns 0.0153 0 0 1.1 KB
master SendReceive netcoreapp3.1 1.57μs 0.556ns 2.15ns 0.0148 0 0 1.1 KB
master SendReceive net472 1.88μs 2.54ns 9.85ns 0.177 0 0 1.12 KB
#4727 SendReceive net6.0 1.35μs 0.565ns 2.04ns 0.0156 0 0 1.1 KB
#4727 SendReceive netcoreapp3.1 1.51μs 1.61ns 6.23ns 0.0149 0 0 1.1 KB
#4727 SendReceive net472 1.86μs 1.69ns 6.53ns 0.177 0 0 1.12 KB
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.67μs 0.797ns 3.09ns 0.0213 0 0 1.53 KB
master EnrichedLog netcoreapp3.1 3.61μs 1.16ns 4.5ns 0.0216 0 0 1.58 KB
master EnrichedLog net472 4.09μs 2.97ns 11.5ns 0.31 0 0 1.96 KB
#4727 EnrichedLog net6.0 2.77μs 0.641ns 2.31ns 0.0208 0 0 1.53 KB
#4727 EnrichedLog netcoreapp3.1 3.58μs 0.922ns 3.57ns 0.0196 0 0 1.58 KB
#4727 EnrichedLog net472 3.98μs 1.25ns 4.52ns 0.31 0 0 1.96 KB
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 426ns 0.208ns 0.805ns 0.00761 0 0 536 B
master StartFinishSpan netcoreapp3.1 580ns 0.244ns 0.914ns 0.00726 0 0 536 B
master StartFinishSpan net472 684ns 0.123ns 0.477ns 0.0852 0 0 538 B
master StartFinishScope net6.0 530ns 0.221ns 0.855ns 0.0093 0 0 656 B
master StartFinishScope netcoreapp3.1 767ns 0.298ns 1.15ns 0.00911 0 0 656 B
master StartFinishScope net472 835ns 0.643ns 2.32ns 0.0978 0 0 618 B
#4727 StartFinishSpan net6.0 450ns 0.19ns 0.685ns 0.00748 0 0 536 B
#4727 StartFinishSpan netcoreapp3.1 599ns 0.202ns 0.782ns 0.0073 0 0 536 B
#4727 StartFinishSpan net472 650ns 0.173ns 0.669ns 0.0853 0 0 538 B
#4727 StartFinishScope net6.0 524ns 0.683ns 2.65ns 0.00918 0 0 656 B
#4727 StartFinishScope netcoreapp3.1 769ns 0.876ns 3.39ns 0.0087 0 0 656 B
#4727 StartFinishScope net472 894ns 0.598ns 2.24ns 0.0981 0 0 618 B
Benchmarks.Trace.TraceAnnotationsBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #4727

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net6.0 1.166 631.16 541.23

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 632ns 0.359ns 1.39ns 0.00918 0 0 656 B
master RunOnMethodBegin netcoreapp3.1 820ns 0.707ns 2.64ns 0.00914 0 0 656 B
master RunOnMethodBegin net472 1.01μs 0.275ns 1.07ns 0.098 0 0 618 B
#4727 RunOnMethodBegin net6.0 541ns 0.305ns 1.18ns 0.00928 0 0 656 B
#4727 RunOnMethodBegin netcoreapp3.1 844ns 0.432ns 1.67ns 0.00899 0 0 656 B
#4727 RunOnMethodBegin net472 1.06μs 0.263ns 1.02ns 0.0979 0 0 618 B

@andrewlock andrewlock force-pushed the tony/dd-trace-standalone-trimming-net70 branch 2 times, most recently from 7b04b7e to 1207f6e Compare October 27, 2023 11:40
@datadog-ddstaging
Copy link

datadog-ddstaging bot commented Oct 27, 2023

Datadog Report

Branch report: tony/dd-trace-standalone-trimming-net70
Commit report: 1207f6e

dd-trace-dotnet: 0 Failed, 0 New Flaky, 304171 Passed, 941 Skipped, 37m 53.56s Wall Time

@andrewlock
Copy link
Member

andrewlock commented Oct 27, 2023

Throughput/Crank Report:zap:

Throughput results for AspNetCoreSimpleController comparing the following branches/commits:

Cases where throughput results for the PR are worse than latest master (5% drop or greater), results are shown in red.

Note that these results are based on a single point-in-time result for each branch. For full results, see one of the many, many dashboards!

gantt
    title Throughput Linux x64 (Total requests) 
    dateFormat  X
    axisFormat %s
    section Baseline
    This PR (4727) (11.416M)   : 0, 11415584
    master (10.765M)   : 0, 10765367
    benchmarks/2.9.0 (11.215M)   : 0, 11214844

    section Automatic
    This PR (4727) (7.828M)   : 0, 7828477
    master (7.480M)   : 0, 7479538
    benchmarks/2.9.0 (8.052M)   : 0, 8052124

    section Trace stats
    This PR (4727) (8.239M)   : 0, 8239255
    master (7.889M)   : 0, 7888566

    section Manual
    This PR (4727) (9.782M)   : 0, 9781626
    master (9.812M)   : 0, 9812112

    section Manual + Automatic
    This PR (4727) (7.294M)   : 0, 7294226
    master (7.340M)   : 0, 7340198

    section Version Conflict
    This PR (4727) (6.720M)   : 0, 6720305
    master (6.763M)   : 0, 6762729

Loading
gantt
    title Throughput Linux arm64 (Total requests) 
    dateFormat  X
    axisFormat %s
    section Baseline
    This PR (4727) (9.575M)   : 0, 9575200
    master (9.729M)   : 0, 9729105
    benchmarks/2.9.0 (9.491M)   : 0, 9490746

    section Automatic
    This PR (4727) (6.518M)   : 0, 6517800
    master (6.666M)   : 0, 6666142

    section Trace stats
    This PR (4727) (6.888M)   : 0, 6888075
    master (6.914M)   : 0, 6913998

    section Manual
    This PR (4727) (8.581M)   : 0, 8581285
    master (8.189M)   : 0, 8189252

    section Manual + Automatic
    This PR (4727) (6.272M)   : 0, 6272289
    master (6.212M)   : 0, 6212129

    section Version Conflict
    This PR (4727) (5.688M)   : 0, 5688133
    master (5.947M)   : 0, 5946691

Loading
gantt
    title Throughput Windows x64 (Total requests) 
    dateFormat  X
    axisFormat %s
    section Baseline
    This PR (4727) (9.616M)   : 0, 9615616
    master (9.476M)   : 0, 9476236
    benchmarks/2.9.0 (9.522M)   : 0, 9522401

    section Automatic
    This PR (4727) (6.789M)   : 0, 6788786
    master (6.683M)   : 0, 6682612
    benchmarks/2.9.0 (7.002M)   : 0, 7001835

    section Trace stats
    This PR (4727) (7.136M)   : 0, 7136389
    master (6.975M)   : 0, 6974727

    section Manual
    This PR (4727) (8.659M)   : 0, 8659143
    master (8.455M)   : 0, 8454852

    section Manual + Automatic
    This PR (4727) (6.557M)   : 0, 6557019
    master (6.644M)   : 0, 6643657

    section Version Conflict
    This PR (4727) (5.908M)   : 0, 5907999
    master (6.056M)   : 0, 6055783

Loading
gantt
    title Throughput Linux x64 (ASM) (Total requests) 
    dateFormat  X
    axisFormat %s
    section Baseline
    master (7.392M)   : 0, 7392030
    benchmarks/2.9.0 (7.864M)   : 0, 7864312

    section No attack
    master (2.126M)   : 0, 2125723
    benchmarks/2.9.0 (3.284M)   : 0, 3283847

    section Attack
    master (1.678M)   : 0, 1677679
    benchmarks/2.9.0 (2.563M)   : 0, 2563495

    section Blocking
    master (3.480M)   : 0, 3479765

    section IAST default
    master (6.599M)   : 0, 6598592

    section IAST full
    master (6.092M)   : 0, 6092306

    section Base vuln
    master (0.961M)   : 0, 961055

    section IAST vuln
    master (0.874M)   : 0, 873801

Loading

@andrewlock andrewlock force-pushed the tony/dd-trace-standalone-trimming-net70 branch from 1207f6e to 0be811c Compare November 8, 2023 16:53
@andrewlock andrewlock marked this pull request as ready for review November 8, 2023 16:54
@andrewlock andrewlock requested review from a team as code owners November 8, 2023 16:54
@datadog-ddstaging
Copy link

datadog-ddstaging bot commented Nov 8, 2023

Datadog Report

Branch report: tony/dd-trace-standalone-trimming-net70
Commit report: 0be811c

dd-trace-dotnet: 0 Failed, 0 New Flaky, 299125 Passed, 974 Skipped, 2 Regressions, 49m 22.45s Wall Time

⌛ Performance Regressions vs Default Branch (2)

  • Profiler_exceptions_cpu_walltime - scenarios 5.66s (+210.22ms, +4%) - Details
  • Baseline - Samples.HttpMessageHandler.windows.net462.json.scenarios 190.26ms (+2.7ms, +1%) - Details

@andrewlock andrewlock merged commit ea7e084 into master Nov 10, 2023
61 checks passed
@andrewlock andrewlock deleted the tony/dd-trace-standalone-trimming-net70 branch November 10, 2023 10:28
@github-actions github-actions bot added this to the vNext milestone Nov 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:builds project files, build scripts, pipelines, versioning, releases, packages area:tools
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants