-
Notifications
You must be signed in to change notification settings - Fork 142
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] Build tracer with ReadyToRun #5962
Conversation
Datadog ReportBranch report: ✅ 0 Failed, 361235 Passed, 2074 Skipped, 14h 42m 10.48s Total Time |
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:
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 (5962) - mean (70ms) : 67, 73
. : milestone, 70,
master - mean (70ms) : 66, 74
. : milestone, 70,
section CallTarget+Inlining+NGEN
This PR (5962) - mean (1,080ms) : 1057, 1102
. : milestone, 1080,
master - mean (1,084ms) : 1061, 1107
. : milestone, 1084,
gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5962) - mean (110ms) : 104, 115
. : milestone, 110,
master - mean (109ms) : 105, 112
. : milestone, 109,
section CallTarget+Inlining+NGEN
This PR (5962) - mean (759ms) : 744, 774
. : milestone, 759,
master - mean (763ms) : 740, 786
. : milestone, 763,
gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5962) - mean (93ms) : 88, 97
. : milestone, 93,
master - mean (93ms) : 89, 97
. : milestone, 93,
section CallTarget+Inlining+NGEN
This PR (5962) - mean (710ms) : 691, 729
. : milestone, 710,
master - mean (714ms) : 694, 733
. : milestone, 714,
gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5962) - mean (191ms) : 187, 194
. : milestone, 191,
master - mean (191ms) : 188, 195
. : milestone, 191,
section CallTarget+Inlining+NGEN
This PR (5962) - mean (1,159ms) : 1128, 1190
. : milestone, 1159,
master - mean (1,165ms) : 1136, 1193
. : milestone, 1165,
gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5962) - mean (276ms) : 271, 280
. : milestone, 276,
master - mean (275ms) : 271, 279
. : milestone, 275,
section CallTarget+Inlining+NGEN
This PR (5962) - mean (919ms) : 899, 939
. : milestone, 919,
master - mean (923ms) : 898, 948
. : milestone, 923,
gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5962) - mean (265ms) : 260, 270
. : milestone, 265,
master - mean (265ms) : 260, 270
. : milestone, 265,
section CallTarget+Inlining+NGEN
This PR (5962) - mean (906ms) : 889, 923
. : milestone, 906,
master - mean (906ms) : 884, 929
. : milestone, 906,
|
Benchmarks Report for tracer 🐌Benchmarks for #5962 compared to master:
The following thresholds were used for comparing the benchmark speeds:
Allocation changes below 0.5% are ignored. Benchmark detailsBenchmarks.Trace.ActivityBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed ✔️ Same allocations ✔️Raw results
|
….com/DataDog/dd-trace-dotnet into jordan.gonzalez/ready-to-run/linux-deb
….com/DataDog/dd-trace-dotnet into jordan.gonzalez/ready-to-run/linux-deb
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
# Keep trying to get the artifact for 30 minutes | ||
downloadUrl="" | ||
TIMEOUT=1800 | ||
STARTED=0 | ||
until (( STARTED == TIMEOUT )) || [ ! -z "${downloadUrl}" ] ; do |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI this will 30mins for the first artifact and then 30 mins for the next one too. That's prob not what we really want, but it's not a big deal, and prob not worth fixing frankly! :D
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is fine, I tested multiple times, and some artifacts were not available, so I think this is OK
|
||
// Needed as we need to restore with the RuntimeIdentifier | ||
DotNetRestore(s => s | ||
.SetProjectFile(Solution.GetProject(Projects.DatadogTraceMsBuild)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you really need this at all? 🤔 I'm about 90% sure you don't need this dll at all, and should be stripping it out of the layer. @tonyredondo can you confirm?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's stripped down later, but I want to make sure I build as close as possible to the current process, don't want to diverge much in case in the future we need to use some r2r binaries for other platforms like Azure!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just for info, I believe this is literally only used if you're using the tracer as part of your build process, so I think there's basically no chance you'll need it 😃
Co-authored-by: Andrew Lock <[email protected]>
also sent another upstream variable just in case we need it in the future
….com/DataDog/dd-trace-dotnet into jordan.gonzalez/ready-to-run/linux-deb
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice looks good to me
It has showcased a 500ms init duration improvement
Solid!
cherry-pick `5c5bec1b893b52c2364a2bf2b66c58a92e6d7d83` [5962](#5962) ## Summary of changes Allows tracer publishing to be compiled with [ReadyToRun](https://learn.microsoft.com/en-us/dotnet/core/deploying/ready-to-run) to improve Serverless workloads init duration. ## Reason for change It has showcased a 500ms init duration improvement for AWS Lambda. Potentially could be used for other workloads in the future. ## Implementation details Followed #4573 and [ReadyToRun](https://learn.microsoft.com/en-us/dotnet/core/deploying/ready-to-run) docs. ## Test coverage - Tested manually in AWS Lambda. ## Other details Increases tracer size by 3x. <!--⚠️ Note: where possible, please obtain 2 approvals prior to merging. Unless CODEOWNERS specifies otherwise, for external teams it is typically best to have one review from a team member, and one review from apm-dotnet. Trivial changes do not require 2 reviews. -->
Summary of changes
Allows tracer publishing to be compiled with ReadyToRun to improve Serverless workloads init duration.
Reason for change
It has showcased a 500ms init duration improvement for AWS Lambda. Potentially could be used for other workloads in the future.
Implementation details
Followed #4573 and ReadyToRun docs.
Test coverage
Other details
Increases tracer size by 3x.