-
Notifications
You must be signed in to change notification settings - Fork 147
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
Replace AWS ARM64 graviton images with Azure Managed DevOps pools #6787
base: master
Are you sure you want to change the base?
Conversation
Datadog ReportBranch report: ✅ 0 Failed, 247691 Passed, 2400 Skipped, 20h 47m 19.62s 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 (6787) - mean (76ms) : 71, 81
. : milestone, 76,
master - mean (69ms) : 66, 73
. : milestone, 69,
section CallTarget+Inlining+NGEN
This PR (6787) - mean (1,059ms) : 1029, 1088
. : milestone, 1059,
master - mean (1,008ms) : 983, 1033
. : milestone, 1008,
gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (6787) - mean (112ms) : 108, 116
. : milestone, 112,
master - mean (102ms) : 100, 104
. : milestone, 102,
section CallTarget+Inlining+NGEN
This PR (6787) - mean (729ms) : crit, 708, 749
. : crit, milestone, 729,
master - mean (688ms) : 670, 706
. : milestone, 688,
gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (6787) - mean (98ms) : 94, 103
. : milestone, 98,
master - mean (89ms) : 87, 91
. : milestone, 89,
section CallTarget+Inlining+NGEN
This PR (6787) - mean (687ms) : crit, 668, 707
. : crit, milestone, 687,
master - mean (642ms) : 626, 658
. : milestone, 642,
gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (6787) - mean (190ms) : 186, 195
. : milestone, 190,
master - mean (190ms) : 186, 194
. : milestone, 190,
section CallTarget+Inlining+NGEN
This PR (6787) - mean (1,103ms) : 1073, 1134
. : milestone, 1103,
master - mean (1,109ms) : 1079, 1140
. : milestone, 1109,
gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (6787) - mean (269ms) : 264, 274
. : milestone, 269,
master - mean (269ms) : 265, 273
. : milestone, 269,
section CallTarget+Inlining+NGEN
This PR (6787) - mean (873ms) : 843, 903
. : milestone, 873,
master - mean (880ms) : 847, 914
. : milestone, 880,
gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (6787) - mean (261ms) : 257, 265
. : milestone, 261,
master - mean (263ms) : 259, 267
. : milestone, 263,
section CallTarget+Inlining+NGEN
This PR (6787) - mean (857ms) : 817, 896
. : milestone, 857,
master - mean (858ms) : 822, 895
. : milestone, 858,
|
Benchmarks Report for tracer 🐌Benchmarks for #6787 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 - Faster 🎉 Same allocations ✔️
|
Benchmark | base/diff | Base Median (ns) | Diff Median (ns) | Modality |
---|---|---|---|---|
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net6.0 | 1.190 | 468.60 | 393.93 |
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | StartFinishSpan |
net6.0 | 469ns | 0.166ns | 0.643ns | 0.0082 | 0 | 0 | 576 B |
master | StartFinishSpan |
netcoreapp3.1 | 581ns | 0.902ns | 3.49ns | 0.00774 | 0 | 0 | 576 B |
master | StartFinishSpan |
net472 | 598ns | 0.148ns | 0.573ns | 0.0917 | 0 | 0 | 578 B |
master | StartFinishScope |
net6.0 | 495ns | 0.178ns | 0.69ns | 0.00985 | 0 | 0 | 696 B |
master | StartFinishScope |
netcoreapp3.1 | 723ns | 0.293ns | 1.13ns | 0.00935 | 0 | 0 | 696 B |
master | StartFinishScope |
net472 | 852ns | 0.339ns | 1.27ns | 0.104 | 0 | 0 | 658 B |
#6787 | StartFinishSpan |
net6.0 | 394ns | 0.106ns | 0.396ns | 0.00801 | 0 | 0 | 576 B |
#6787 | StartFinishSpan |
netcoreapp3.1 | 589ns | 0.387ns | 1.45ns | 0.00766 | 0 | 0 | 576 B |
#6787 | StartFinishSpan |
net472 | 662ns | 0.389ns | 1.51ns | 0.0915 | 0 | 0 | 578 B |
#6787 | StartFinishScope |
net6.0 | 494ns | 0.124ns | 0.479ns | 0.00976 | 0 | 0 | 696 B |
#6787 | StartFinishScope |
netcoreapp3.1 | 735ns | 0.241ns | 0.902ns | 0.00925 | 0 | 0 | 696 B |
#6787 | StartFinishScope |
net472 | 854ns | 0.639ns | 2.48ns | 0.104 | 0 | 0 | 658 B |
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | RunOnMethodBegin |
net6.0 | 676ns | 0.192ns | 0.745ns | 0.00986 | 0 | 0 | 696 B |
master | RunOnMethodBegin |
netcoreapp3.1 | 957ns | 0.315ns | 1.22ns | 0.00911 | 0 | 0 | 696 B |
master | RunOnMethodBegin |
net472 | 1.12μs | 0.226ns | 0.876ns | 0.104 | 0 | 0 | 658 B |
#6787 | RunOnMethodBegin |
net6.0 | 666ns | 0.256ns | 0.99ns | 0.00979 | 0 | 0 | 696 B |
#6787 | RunOnMethodBegin |
netcoreapp3.1 | 1.03μs | 0.557ns | 2.16ns | 0.00914 | 0 | 0 | 696 B |
#6787 | RunOnMethodBegin |
net472 | 1.1μs | 0.254ns | 0.984ns | 0.104 | 0 | 0 | 658 B |
b6059b2
to
18f9104
Compare
This reverts commit 18f9104.
…ad on linux, to avoid permissions issues
9f5e76c
to
ed15394
Compare
Summary of changes
Replaces our previous ARM64 auto-scaling graviton agents with Azure Managed DevOps pool images
Reason for change
The AWS sandbox is being retired, which we means we would have to rebuild the somewhat hacky "VMSS emulator" that we built there, because Microsoft have refused to support ARM64 VMSS pools with Azure DevOps
This will hopefully bring a number of additional benefits, in that it supports more dynamic (and greater) scaling, allows dynamic scaling up and down (e.g. scale all the images off at night) and still allows us to use custom images.
Implementation details
Followed the documentation to perform all the preliminary configuration to enable Managed DevOps pools. Adding a new pool needs to be done from Azure, but should be relatively simple.
It still requires that create new VM images in certain circumstances, but now the process of creating an image is identical for x64 and arm64.
Currently the x64 Linux and Windows images are still using VMSS instead of Managed DevOps pools, but we can consider migrating those across in the future.
Test coverage
Ran some manual tests, and once the initial configuration was done, worked like a charm with one exception - the Docker tests were failing to upload the logs, because localstack was locking the directory. I don't think we actually need to report this temp file, so removed the binding for simplicity.
However we also realised that the same permissions issue was preventing crashdump uploads too, so fixed that "everywhere" by creating a small template to do the permissions fix.