Enable OpenTelemetry microbenchmarks#8559
Conversation
a1d8a1f to
37ab98f
Compare
13c59ea to
27074e7
Compare
This stack of pull requests is managed by Graphite. Learn more about stacking. |
BenchmarksBenchmark execution time: 2026-05-07 13:55:14 Comparing candidate commit f3780025 in PR branch Some scenarios are present only in baseline or only in candidate runs. If you didn't create or remove some scenarios in your branch, this maybe a sign of crashed benchmarks 💥💥💥 Scenarios present only in baseline:
Found 3 performance improvements and 2 performance regressions! Performance is the same for 48 metrics, 19 unstable metrics, 91 known flaky benchmarks, 35 flaky benchmarks without significant changes.
|
7e8b594 to
0f362e2
Compare
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8559) and master.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - CallTarget+Inlining+NGEN | ||||
| duration | 1264.58 ± (1263.27 - 1269.26) ms | 1336.79 ± (1335.73 - 1343.77) ms | +5.7% | ❌⬆️ |
Full Metrics Comparison
FakeDbCommand
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - Baseline | ||||
| duration | 74.77 ± (74.78 - 75.47) ms | 72.40 ± (72.37 - 72.69) ms | -3.2% | ✅ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 79.43 ± (78.92 - 79.46) ms | 77.22 ± (77.29 - 77.75) ms | -2.8% | ✅ |
| .NET Framework 4.8 - CallTarget+Inlining+NGEN | ||||
| duration | 1125.90 ± (1125.54 - 1132.96) ms | 1127.42 ± (1127.99 - 1133.54) ms | +0.1% | ✅⬆️ |
| .NET Core 3.1 - Baseline | ||||
| process.internal_duration_ms | 22.69 ± (22.62 - 22.75) ms | 22.50 ± (22.46 - 22.55) ms | -0.8% | ✅ |
| process.time_to_main_ms | 87.16 ± (86.80 - 87.51) ms | 84.99 ± (84.72 - 85.26) ms | -2.5% | ✅ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.91 ± (10.90 - 10.91) MB | 10.94 ± (10.93 - 10.94) MB | +0.3% | ✅⬆️ |
| runtime.dotnet.threads.count | 12 ± (12 - 12) | 12 ± (12 - 12) | +0.0% | ✅ |
| .NET Core 3.1 - Bailout | ||||
| process.internal_duration_ms | 22.40 ± (22.36 - 22.44) ms | 22.71 ± (22.65 - 22.78) ms | +1.4% | ✅⬆️ |
| process.time_to_main_ms | 85.56 ± (85.35 - 85.76) ms | 88.92 ± (88.59 - 89.24) ms | +3.9% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.96 ± (10.95 - 10.96) MB | 10.96 ± (10.96 - 10.96) MB | +0.0% | ✅⬆️ |
| runtime.dotnet.threads.count | 13 ± (13 - 13) | 13 ± (13 - 13) | +0.0% | ✅ |
| .NET Core 3.1 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 204.40 ± (203.79 - 205.00) ms | 204.56 ± (204.01 - 205.12) ms | +0.1% | ✅⬆️ |
| process.time_to_main_ms | 566.93 ± (565.53 - 568.34) ms | 566.60 ± (565.01 - 568.19) ms | -0.1% | ✅ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 49.80 ± (49.77 - 49.83) MB | 49.77 ± (49.74 - 49.80) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 28 ± (28 - 28) | 28 ± (28 - 28) | +1.0% | ✅⬆️ |
| .NET 6 - Baseline | ||||
| process.internal_duration_ms | 21.53 ± (21.47 - 21.59) ms | 21.09 ± (21.05 - 21.13) ms | -2.1% | ✅ |
| process.time_to_main_ms | 75.75 ± (75.46 - 76.03) ms | 72.94 ± (72.74 - 73.14) ms | -3.7% | ✅ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.63 ± (10.62 - 10.63) MB | 10.63 ± (10.63 - 10.64) MB | +0.0% | ✅⬆️ |
| runtime.dotnet.threads.count | 10 ± (10 - 10) | 10 ± (10 - 10) | +0.0% | ✅ |
| .NET 6 - Bailout | ||||
| process.internal_duration_ms | 21.10 ± (21.06 - 21.13) ms | 20.94 ± (20.90 - 20.97) ms | -0.8% | ✅ |
| process.time_to_main_ms | 74.75 ± (74.58 - 74.93) ms | 73.88 ± (73.67 - 74.09) ms | -1.2% | ✅ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.74 ± (10.74 - 10.74) MB | 10.75 ± (10.74 - 10.75) MB | +0.1% | ✅⬆️ |
| runtime.dotnet.threads.count | 11 ± (11 - 11) | 11 ± (11 - 11) | +0.0% | ✅ |
| .NET 6 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 353.37 ± (351.28 - 355.46) ms | 355.60 ± (352.64 - 358.57) ms | +0.6% | ✅⬆️ |
| process.time_to_main_ms | 563.86 ± (562.44 - 565.28) ms | 564.96 ± (562.69 - 567.23) ms | +0.2% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 50.97 ± (50.94 - 50.99) MB | 51.14 ± (51.11 - 51.17) MB | +0.3% | ✅⬆️ |
| runtime.dotnet.threads.count | 28 ± (28 - 28) | 28 ± (28 - 28) | +0.0% | ✅⬆️ |
| .NET 8 - Baseline | ||||
| process.internal_duration_ms | 19.83 ± (19.77 - 19.89) ms | 19.46 ± (19.42 - 19.49) ms | -1.9% | ✅ |
| process.time_to_main_ms | 75.12 ± (74.84 - 75.40) ms | 73.50 ± (73.32 - 73.68) ms | -2.2% | ✅ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 7.68 ± (7.68 - 7.69) MB | 7.68 ± (7.67 - 7.68) MB | -0.0% | ✅ |
| runtime.dotnet.threads.count | 10 ± (10 - 10) | 10 ± (10 - 10) | +0.0% | ✅ |
| .NET 8 - Bailout | ||||
| process.internal_duration_ms | 19.71 ± (19.65 - 19.77) ms | 19.51 ± (19.47 - 19.55) ms | -1.0% | ✅ |
| process.time_to_main_ms | 76.07 ± (75.79 - 76.34) ms | 74.71 ± (74.55 - 74.86) ms | -1.8% | ✅ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 7.72 ± (7.72 - 7.73) MB | 7.73 ± (7.72 - 7.73) MB | +0.1% | ✅⬆️ |
| runtime.dotnet.threads.count | 11 ± (11 - 11) | 11 ± (11 - 11) | +0.0% | ✅ |
| .NET 8 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 280.42 ± (278.17 - 282.67) ms | 280.92 ± (278.12 - 283.73) ms | +0.2% | ✅⬆️ |
| process.time_to_main_ms | 521.49 ± (520.14 - 522.84) ms | 525.45 ± (524.02 - 526.89) ms | +0.8% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 37.86 ± (37.83 - 37.90) MB | 37.89 ± (37.86 - 37.91) MB | +0.1% | ✅⬆️ |
| runtime.dotnet.threads.count | 27 ± (27 - 27) | 27 ± (27 - 27) | +0.1% | ✅⬆️ |
HttpMessageHandler
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - Baseline | ||||
| duration | 202.64 ± (203.29 - 204.97) ms | 210.69 ± (212.92 - 215.73) ms | +4.0% | ✅⬆️ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 207.02 ± (207.21 - 208.46) ms | 215.86 ± (217.47 - 220.30) ms | +4.3% | ✅⬆️ |
| .NET Framework 4.8 - CallTarget+Inlining+NGEN | ||||
| duration | 1264.58 ± (1263.27 - 1269.26) ms | 1336.79 ± (1335.73 - 1343.77) ms | +5.7% | ❌⬆️ |
| .NET Core 3.1 - Baseline | ||||
| process.internal_duration_ms | 200.22 ± (199.53 - 200.92) ms | 210.19 ± (208.70 - 211.68) ms | +5.0% | ✅⬆️ |
| process.time_to_main_ms | 87.05 ± (86.71 - 87.39) ms | 92.02 ± (91.36 - 92.67) ms | +5.7% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 15.96 ± (15.94 - 15.97) MB | 15.84 ± (15.82 - 15.86) MB | -0.7% | ✅ |
| runtime.dotnet.threads.count | 20 ± (20 - 20) | 20 ± (20 - 20) | +0.9% | ✅⬆️ |
| .NET Core 3.1 - Bailout | ||||
| process.internal_duration_ms | 200.40 ± (199.56 - 201.25) ms | 209.00 ± (207.63 - 210.37) ms | +4.3% | ✅⬆️ |
| process.time_to_main_ms | 88.64 ± (88.27 - 89.02) ms | 92.63 ± (91.97 - 93.29) ms | +4.5% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 15.98 ± (15.96 - 15.99) MB | 15.88 ± (15.86 - 15.90) MB | -0.6% | ✅ |
| runtime.dotnet.threads.count | 21 ± (21 - 21) | 21 ± (21 - 21) | +0.5% | ✅⬆️ |
| .NET Core 3.1 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 386.01 ± (384.62 - 387.41) ms | 393.66 ± (391.57 - 395.75) ms | +2.0% | ✅⬆️ |
| process.time_to_main_ms | 583.59 ± (581.82 - 585.36) ms | 604.14 ± (600.89 - 607.39) ms | +3.5% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 58.59 ± (58.42 - 58.75) MB | 59.32 ± (59.17 - 59.47) MB | +1.3% | ✅⬆️ |
| runtime.dotnet.threads.count | 30 ± (30 - 30) | 30 ± (30 - 30) | +0.7% | ✅⬆️ |
| .NET 6 - Baseline | ||||
| process.internal_duration_ms | 204.83 ± (204.19 - 205.46) ms | 213.01 ± (211.44 - 214.58) ms | +4.0% | ✅⬆️ |
| process.time_to_main_ms | 75.41 ± (75.12 - 75.71) ms | 78.82 ± (78.26 - 79.38) ms | +4.5% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.24 ± (16.22 - 16.26) MB | 16.21 ± (16.19 - 16.23) MB | -0.2% | ✅ |
| runtime.dotnet.threads.count | 19 ± (19 - 19) | 20 ± (19 - 20) | +0.9% | ✅⬆️ |
| .NET 6 - Bailout | ||||
| process.internal_duration_ms | 205.14 ± (204.46 - 205.82) ms | 212.44 ± (210.93 - 213.94) ms | +3.6% | ✅⬆️ |
| process.time_to_main_ms | 76.82 ± (76.51 - 77.12) ms | 79.84 ± (79.29 - 80.38) ms | +3.9% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.29 ± (16.27 - 16.31) MB | 16.27 ± (16.25 - 16.29) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 20 ± (20 - 20) | 20 ± (20 - 21) | +0.9% | ✅⬆️ |
| .NET 6 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 567.35 ± (564.70 - 569.99) ms | 587.92 ± (581.74 - 594.10) ms | +3.6% | ✅⬆️ |
| process.time_to_main_ms | 570.70 ± (569.50 - 571.90) ms | 596.69 ± (594.15 - 599.23) ms | +4.6% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 61.94 ± (61.90 - 61.97) MB | 62.25 ± (62.17 - 62.33) MB | +0.5% | ✅⬆️ |
| runtime.dotnet.threads.count | 31 ± (31 - 31) | 31 ± (31 - 31) | +0.8% | ✅⬆️ |
| .NET 8 - Baseline | ||||
| process.internal_duration_ms | 202.87 ± (202.26 - 203.49) ms | 208.84 ± (207.44 - 210.24) ms | +2.9% | ✅⬆️ |
| process.time_to_main_ms | 74.81 ± (74.54 - 75.07) ms | 76.87 ± (76.42 - 77.33) ms | +2.8% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 11.64 ± (11.63 - 11.66) MB | 11.53 ± (11.50 - 11.55) MB | -1.0% | ✅ |
| runtime.dotnet.threads.count | 19 ± (19 - 19) | 19 ± (19 - 19) | +0.6% | ✅⬆️ |
| .NET 8 - Bailout | ||||
| process.internal_duration_ms | 202.43 ± (201.72 - 203.14) ms | 209.80 ± (208.58 - 211.02) ms | +3.6% | ✅⬆️ |
| process.time_to_main_ms | 75.69 ± (75.44 - 75.95) ms | 79.35 ± (78.95 - 79.74) ms | +4.8% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 11.63 ± (11.62 - 11.65) MB | 11.55 ± (11.53 - 11.57) MB | -0.7% | ✅ |
| runtime.dotnet.threads.count | 20 ± (20 - 20) | 20 ± (20 - 20) | +1.7% | ✅⬆️ |
| .NET 8 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 495.65 ± (491.23 - 500.07) ms | 540.53 ± (532.74 - 548.32) ms | +9.1% | ✅⬆️ |
| process.time_to_main_ms | 531.02 ± (529.46 - 532.59) ms | 557.73 ± (554.86 - 560.61) ms | +5.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 51.66 ± (51.61 - 51.70) MB | 51.71 ± (51.64 - 51.77) MB | +0.1% | ✅⬆️ |
| runtime.dotnet.threads.count | 30 ± (30 - 30) | 30 ± (30 - 30) | -0.0% | ✅ |
Comparison explanation
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 highlighted 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).
Duration charts
FakeDbCommand (.NET Framework 4.8)
gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8559) - mean (73ms) : 70, 75
master - mean (75ms) : 70, 80
section Bailout
This PR (8559) - mean (78ms) : 75, 80
master - mean (79ms) : 75, 83
section CallTarget+Inlining+NGEN
This PR (8559) - mean (1,131ms) : 1091, 1170
master - mean (1,129ms) : 1075, 1183
FakeDbCommand (.NET Core 3.1)
gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8559) - mean (115ms) : 109, 121
master - mean (117ms) : 110, 124
section Bailout
This PR (8559) - mean (119ms) : 112, 126
master - mean (115ms) : 112, 118
section CallTarget+Inlining+NGEN
This PR (8559) - mean (809ms) : 783, 835
master - mean (808ms) : 777, 839
FakeDbCommand (.NET 6)
gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8559) - mean (100ms) : 96, 104
master - mean (104ms) : 99, 109
section Bailout
This PR (8559) - mean (101ms) : 98, 104
master - mean (102ms) : 98, 106
section CallTarget+Inlining+NGEN
This PR (8559) - mean (952ms) : 916, 987
master - mean (951ms) : 910, 991
FakeDbCommand (.NET 8)
gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8559) - mean (101ms) : 96, 106
master - mean (103ms) : 97, 109
section Bailout
This PR (8559) - mean (102ms) : 99, 105
master - mean (104ms) : 99, 109
section CallTarget+Inlining+NGEN
This PR (8559) - mean (837ms) : 785, 889
master - mean (834ms) : 791, 876
HttpMessageHandler (.NET Framework 4.8)
gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8559) - mean (214ms) : 194, 235
master - mean (204ms) : 192, 217
section Bailout
This PR (8559) - mean (219ms) : 198, 239
master - mean (208ms) : 199, 217
section CallTarget+Inlining+NGEN
This PR (8559) - mean (1,340ms) : crit, 1282, 1398
master - mean (1,266ms) : 1223, 1309
HttpMessageHandler (.NET Core 3.1)
gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8559) - mean (317ms) : 279, 355
master - mean (298ms) : 282, 315
section Bailout
This PR (8559) - mean (315ms) : 282, 348
master - mean (299ms) : 283, 315
section CallTarget+Inlining+NGEN
This PR (8559) - mean (1,054ms) : 1007, 1102
master - mean (1,010ms) : 987, 1033
HttpMessageHandler (.NET 6)
gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8559) - mean (304ms) : 269, 338
master - mean (290ms) : 276, 304
section Bailout
This PR (8559) - mean (308ms) : 265, 351
master - mean (292ms) : 277, 307
section CallTarget+Inlining+NGEN
This PR (8559) - mean (1,226ms) : 1129, 1324
master - mean (1,171ms) : 1132, 1210
HttpMessageHandler (.NET 8)
gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8559) - mean (300ms) : 266, 335
master - mean (289ms) : 274, 305
section Bailout
This PR (8559) - mean (304ms) : 271, 336
master - mean (289ms) : 274, 305
section CallTarget+Inlining+NGEN
This PR (8559) - mean (1,129ms) : crit, 1035, 1223
master - mean (1,065ms) : 988, 1141
…llocation - Add batch-2 for Benchmarks.OpenTelemetry.InstrumentedApi (all commits) - Add batch-3 for Benchmarks.OpenTelemetry.Api (master only) - Change cpus_per_item from 2 to 1 for better parallelism - Use non-overlapping CPU masks across batches - Support BENCHMARK_PROJECT and ONLY_ON_MASTER env vars in runner script
- Remove ONLY_ON_MASTER env var and its check - Add DLL existence check to skip benchmarks for projects not built - Add comments explaining BENCHMARK_CATEGORY usage
- batch-0 -> trace - batch-1 -> trace-unstable - batch-2 -> otel-instr-api - batch-3 -> otel-api
Exit 56 (recv failure) not retried by default. --retry-all-errors fixes.
68b5bc1 to
38144d4
Compare
Run benchmark_analyzer convert and curl uploads concurrently via backgrounded functions, collecting results through temp files.
Since we made changes that increase bench flakiness
To make interleaving less weird
Nuke's BuildBenchmarks checks PR_NUMBER to exclude Benchmarks.OpenTelemetry.Api on PRs. Without forwarding it, the project was built and run on every PR unnecessarily.

Summary of changes
launchCountfrom 10 to 5.- Memory allocation metrics remain stable.
¹ Worst offenders when it comes to allocated memory false positives
² I have no idea why both execution time and throughput went down. I would imagine they would have inverse behaviors? Maybe this is because of some BenchmarkDotNet internal? Anyways, execution time and throughput are not looking super reliable for gating in any case.
Reason for change
Restore OpenTelemetry benchmarks missing after bp-runner migration, and improve CI job performance.
Implementation details
Test coverage