[Profiler] Generate reference chain#8225
Conversation
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8225) and master. ✅ No regressions detected - check the details below Full Metrics ComparisonFakeDbCommand
HttpMessageHandler
Comparison explanationExecution-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:
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 chartsFakeDbCommand (.NET Framework 4.8)gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8225) - mean (73ms) : 70, 76
master - mean (75ms) : 72, 78
section Bailout
This PR (8225) - mean (77ms) : 75, 79
master - mean (79ms) : 75, 82
section CallTarget+Inlining+NGEN
This PR (8225) - mean (1,099ms) : 1049, 1150
master - mean (1,099ms) : 1053, 1145
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 (8225) - mean (115ms) : 111, 119
master - mean (118ms) : 111, 125
section Bailout
This PR (8225) - mean (116ms) : 113, 118
master - mean (116ms) : 113, 119
section CallTarget+Inlining+NGEN
This PR (8225) - mean (793ms) : 774, 812
master - mean (797ms) : 778, 817
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8225) - mean (103ms) : 99, 107
master - mean (103ms) : 99, 106
section Bailout
This PR (8225) - mean (102ms) : 100, 104
master - mean (102ms) : 99, 105
section CallTarget+Inlining+NGEN
This PR (8225) - mean (956ms) : 910, 1001
master - mean (955ms) : 920, 991
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8225) - mean (101ms) : 98, 104
master - mean (102ms) : 97, 106
section Bailout
This PR (8225) - mean (102ms) : 98, 106
master - mean (102ms) : 98, 106
section CallTarget+Inlining+NGEN
This PR (8225) - mean (820ms) : 782, 858
master - mean (824ms) : 780, 868
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 (8225) - mean (199ms) : 193, 206
master - mean (199ms) : 193, 205
section Bailout
This PR (8225) - mean (203ms) : 199, 207
master - mean (202ms) : 198, 206
section CallTarget+Inlining+NGEN
This PR (8225) - mean (1,199ms) : 1158, 1240
master - mean (1,194ms) : 1148, 1240
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 (8225) - mean (286ms) : 279, 293
master - mean (284ms) : 274, 294
section Bailout
This PR (8225) - mean (287ms) : 281, 293
master - mean (285ms) : 279, 291
section CallTarget+Inlining+NGEN
This PR (8225) - mean (963ms) : 940, 986
master - mean (961ms) : 936, 985
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8225) - mean (281ms) : 273, 289
master - mean (278ms) : 269, 286
section Bailout
This PR (8225) - mean (279ms) : 273, 285
master - mean (277ms) : 269, 286
section CallTarget+Inlining+NGEN
This PR (8225) - mean (1,159ms) : 1127, 1191
master - mean (1,164ms) : 1116, 1213
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8225) - mean (277ms) : 271, 283
master - mean (279ms) : 269, 288
section Bailout
This PR (8225) - mean (277ms) : 269, 284
master - mean (279ms) : 272, 285
section CallTarget+Inlining+NGEN
This PR (8225) - mean (1,031ms) : 995, 1067
master - mean (1,040ms) : 997, 1083
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BenchmarksBenchmark execution time: 2026-06-16 19:53:52 Comparing candidate commit 9d20e62 in PR branch Found 0 performance improvements and 2 performance regressions! Performance is the same for 70 metrics, 0 unstable metrics, 58 known flaky benchmarks, 68 flaky benchmarks without significant changes.
|
Fixing tests and tooling
- Enforce file format (json/binary)
77f2f1e to
ba9c5e8
Compare
r1viollet
left a comment
There was a problem hiding this comment.
We discussed the work outside of the PR & thank you for making considerable improvements to the initial PR.
LGTM on my side, excited to see the capability
…tests_arm64, static_analysis_tests_profiler) on #8225
dc5cd0a to
a9534fe
Compare
- allow skip reference chain for only class histogram
Summary of changes
Generate reference chain at type level
Reason for change
Last step to help pointing out memory leaks root cause (i.e. which root is responsible for keeping instances alive)
Implementation details
Listen to GC_BULK_ROOT_STATIC_VAR and GC_BULK_ROOT_EDGE to get the different kinds of root. Next, traverse the reference fields down to a leak (i.e. non reference object). The reference chain is kept at the type level to avoid consumming to much memory and serialized in .json format to be sent with profile data.
Test coverage
Unit tests and integration tests have been added.
Other details