DataDog / dd-trace-dotnet

.NET Client Library for Datadog APM
https://docs.datadoghq.com/tracing/
Apache License 2.0
437 stars 137 forks source link

[Profiler] Fix LinuxDlIteratePhdrDeadlock test (#5963 -> v2) #6003

Closed gleocadie closed 2 weeks ago

gleocadie commented 3 weeks ago

Summary of changes

Fix LinuxDlIteratePhdrDeadlock test.

Reason for change

The test is randomly failing and not because there is a deadlock, but only because it's not correct. It uses the dlopen and dlclose from libdl.so library, instead of the ones we wrapped in the Datadog.Linux.ApiWrapper.x64.so file.

Implementation details

Test coverage

Other details

Backporting of #5963

andrewlock commented 3 weeks ago

Execution-Time Benchmarks Report :stopwatch:

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 (6003) - mean (75ms)  : 65, 85
     .   : milestone, 75,
    master - mean (69ms)  : 67, 71
     .   : milestone, 69,

    section CallTarget+Inlining+NGEN
    This PR (6003) - mean (1,067ms)  : 1048, 1087
     .   : milestone, 1067,
    master - mean (1,107ms)  : 1093, 1121
     .   : milestone, 1107,
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6003) - mean (110ms)  : 106, 114
     .   : milestone, 110,
    master - mean (108ms)  : 105, 111
     .   : milestone, 108,

    section CallTarget+Inlining+NGEN
    This PR (6003) - mean (780ms)  : 763, 796
     .   : milestone, 780,
    master - mean (819ms)  : 799, 839
     .   : milestone, 819,
gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6003) - mean (95ms)  : 91, 98
     .   : milestone, 95,
    master - mean (91ms)  : 88, 95
     .   : milestone, 91,

    section CallTarget+Inlining+NGEN
    This PR (6003) - mean (733ms)  : 713, 753
     .   : milestone, 733,
    master - mean (772ms)  : 753, 790
     .   : milestone, 772,
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6003) - mean (190ms)  : 187, 193
     .   : milestone, 190,
    master - mean (191ms)  : 187, 194
     .   : milestone, 191,

    section CallTarget+Inlining+NGEN
    This PR (6003) - mean (1,147ms)  : 1123, 1170
     .   : milestone, 1147,
    master - mean (1,192ms)  : 1162, 1221
     .   : milestone, 1192,
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6003) - mean (278ms)  : 273, 282
     .   : milestone, 278,
    master - mean (276ms)  : 271, 281
     .   : milestone, 276,

    section CallTarget+Inlining+NGEN
    This PR (6003) - mean (938ms)  : 917, 959
     .   : milestone, 938,
    master - mean (972ms)  : 950, 994
     .   : milestone, 972,
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6003) - mean (265ms)  : 260, 270
     .   : milestone, 265,
    master - mean (264ms)  : 261, 268
     .   : milestone, 264,

    section CallTarget+Inlining+NGEN
    This PR (6003) - mean (908ms)  : 888, 928
     .   : milestone, 908,
    master - mean (951ms)  : 928, 974
     .   : milestone, 951,
andrewlock commented 3 weeks ago

Benchmarks Report for tracer :snail:

Benchmarks for #6003 compared to master:

The following thresholds were used for comparing the benchmark speeds:

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.ActivityBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark: ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`StartStopWithChild`|net6.0|7.66μs|41ns|213ns|0.0185| 0.0074|0|5.43 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`StartStopWithChild`|netcoreapp3.1|9.76μs|39.4ns|152ns|0.0192| 0.00959|0|5.62 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`StartStopWithChild`|net472|15.7μs|50.8ns|197ns|1.01| 0.293|0.1|6.06 KB| |#6003|`StartStopWithChild`|net6.0|7.6μs|43.2ns|321ns|0.0152| 0.00761|0|5.42 KB| |#6003|`StartStopWithChild`|netcoreapp3.1|9.73μs|51.6ns|253ns|0.0197| 0.00984|0|5.61 KB| |#6003|`StartStopWithChild`|net472|15.9μs|36.5ns|136ns|1.01| 0.303|0.0957|6.06 KB|
Benchmarks.Trace.AgentWriterBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark: ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`WriteAndFlushEnrichedTraces`|net6.0|485μs|430ns|1.67μs|0| 0|0|2.7 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`WriteAndFlushEnrichedTraces`|netcoreapp3.1|637μs|464ns|1.8μs|0| 0|0|2.7 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`WriteAndFlushEnrichedTraces`|net472|844μs|639ns|2.47μs|0.422| 0|0|3.3 KB| |#6003|`WriteAndFlushEnrichedTraces`|net6.0|481μs|246ns|887ns|0| 0|0|2.7 KB| |#6003|`WriteAndFlushEnrichedTraces`|netcoreapp3.1|652μs|351ns|1.36μs|0| 0|0|2.7 KB| |#6003|`WriteAndFlushEnrichedTraces`|net472|837μs|267ns|1.04μs|0.417| 0|0|3.3 KB|
Benchmarks.Trace.AspNetCoreBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark: ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`SendRequest`|net6.0|208μs|1.41μs|14μs|0.193| 0|0|18.45 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`SendRequest`|netcoreapp3.1|231μs|1.74μs|17.3μs|0.215| 0|0|20.61 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`SendRequest`|net472|0.000452ns|0.000312ns|0.00113ns|0| 0|0|0 b| |#6003|`SendRequest`|net6.0|199μs|1.13μs|9.63μs|0.199| 0|0|18.45 KB| |#6003|`SendRequest`|netcoreapp3.1|220μs|1.23μs|9.24μs|0.228| 0|0|20.61 KB| |#6003|`SendRequest`|net472|0.00202ns|0.000884ns|0.00342ns|0| 0|0|0 b|
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed :heavy_check_mark: More allocations :warning: #### More allocations :warning: in #6003 | Benchmark | Base Allocated | Diff Allocated | Change | Change % | |:----------|-----------:|-----------:|--------:|--------:| | Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 | 41.66 KB | 41.9 KB | 247 B | 0.59% ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`WriteAndFlushEnrichedTraces`|net6.0|577μs|3.07μs|15.3μs|0.571| 0|0|41.56 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`WriteAndFlushEnrichedTraces`|netcoreapp3.1|665μs|3.03μs|12.1μs|0.345| 0|0|41.66 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`WriteAndFlushEnrichedTraces`|net472|873μs|3μs|11.2μs|8.19| 2.59|0.431|53.32 KB| |#6003|`WriteAndFlushEnrichedTraces`|net6.0|559μs|2.6μs|9.74μs|0.563| 0|0|41.63 KB| |#6003|`WriteAndFlushEnrichedTraces`|netcoreapp3.1|696μs|3.68μs|18.4μs|0.334| 0|0|41.9 KB| |#6003|`WriteAndFlushEnrichedTraces`|net472|875μs|4.21μs|16.3μs|8.39| 2.52|0.419|53.27 KB|
Benchmarks.Trace.DbCommandBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark: ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`ExecuteNonQuery`|net6.0|1.25μs|0.742ns|2.78ns|0.0143| 0|0|1.02 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`ExecuteNonQuery`|netcoreapp3.1|1.77μs|1.43ns|5.53ns|0.0133| 0|0|1.02 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`ExecuteNonQuery`|net472|2.04μs|2.5ns|9.67ns|0.156| 0|0|987 B| |#6003|`ExecuteNonQuery`|net6.0|1.27μs|1.64ns|6.34ns|0.0145| 0|0|1.02 KB| |#6003|`ExecuteNonQuery`|netcoreapp3.1|1.73μs|0.878ns|3.17ns|0.0133| 0|0|1.02 KB| |#6003|`ExecuteNonQuery`|net472|2.1μs|1.39ns|5.21ns|0.156| 0|0|987 B|
Benchmarks.Trace.ElasticsearchBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark: ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`CallElasticsearch`|net6.0|1.15μs|0.501ns|1.87ns|0.0133| 0|0|976 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`CallElasticsearch`|netcoreapp3.1|1.55μs|0.603ns|2.34ns|0.0132| 0|0|976 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`CallElasticsearch`|net472|2.48μs|0.844ns|3.04ns|0.158| 0|0|995 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`CallElasticsearchAsync`|net6.0|1.32μs|0.773ns|2.68ns|0.0132| 0|0|952 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`CallElasticsearchAsync`|netcoreapp3.1|1.61μs|0.89ns|3.33ns|0.0138| 0|0|1.02 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`CallElasticsearchAsync`|net472|2.58μs|1.75ns|6.78ns|0.166| 0|0|1.05 KB| |#6003|`CallElasticsearch`|net6.0|1.18μs|0.813ns|3.15ns|0.0137| 0|0|976 B| |#6003|`CallElasticsearch`|netcoreapp3.1|1.6μs|0.839ns|3.25ns|0.0128| 0|0|976 B| |#6003|`CallElasticsearch`|net472|2.49μs|1.92ns|7.44ns|0.158| 0|0|995 B| |#6003|`CallElasticsearchAsync`|net6.0|1.32μs|1.74ns|6.49ns|0.0132| 0|0|952 B| |#6003|`CallElasticsearchAsync`|netcoreapp3.1|1.6μs|1.62ns|6.27ns|0.0136| 0|0|1.02 KB| |#6003|`CallElasticsearchAsync`|net472|2.52μs|1.98ns|7.68ns|0.166| 0|0|1.05 KB|
Benchmarks.Trace.GraphQLBenchmark - Faster :tada: Same allocations :heavy_check_mark: #### Faster :tada: in #6003 | Benchmark | base/diff | Base Median (ns) | Diff Median (ns) | Modality | |:----------|-----------:|-----------:|--------:|--------:| | Benchmarks.Trace.GraphQLBenchmark.ExecuteAsync‑net6.0 | 1.194 | 1,462.79 | 1,225.12 | ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`ExecuteAsync`|net6.0|1.46μs|1.18ns|4.58ns|0.0132| 0|0|952 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`ExecuteAsync`|netcoreapp3.1|1.69μs|1.44ns|5.39ns|0.0127| 0|0|952 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`ExecuteAsync`|net472|1.8μs|1.13ns|4.36ns|0.145| 0|0|915 B| |#6003|`ExecuteAsync`|net6.0|1.23μs|0.823ns|3.19ns|0.0134| 0|0|952 B| |#6003|`ExecuteAsync`|netcoreapp3.1|1.55μs|0.457ns|1.77ns|0.0125| 0|0|952 B| |#6003|`ExecuteAsync`|net472|1.81μs|0.896ns|3.35ns|0.145| 0|0|915 B|
Benchmarks.Trace.HttpClientBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark: ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`SendAsync`|net6.0|4.2μs|2.26ns|8.45ns|0.0295| 0|0|2.22 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`SendAsync`|netcoreapp3.1|5.04μs|1.25ns|4.69ns|0.0379| 0|0|2.76 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`SendAsync`|net472|7.71μs|2.53ns|9.11ns|0.497| 0|0|3.15 KB| |#6003|`SendAsync`|net6.0|4.16μs|1.19ns|4.46ns|0.0315| 0|0|2.22 KB| |#6003|`SendAsync`|netcoreapp3.1|5.14μs|1.01ns|3.93ns|0.0359| 0|0|2.76 KB| |#6003|`SendAsync`|net472|7.84μs|1.66ns|6.43ns|0.497| 0|0|3.15 KB|
Benchmarks.Trace.ILoggerBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark: ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`EnrichedLog`|net6.0|1.54μs|0.605ns|2.26ns|0.0231| 0|0|1.64 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`EnrichedLog`|netcoreapp3.1|2.16μs|1.7ns|5.88ns|0.0216| 0|0|1.64 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`EnrichedLog`|net472|2.59μs|2.31ns|8.94ns|0.25| 0|0|1.57 KB| |#6003|`EnrichedLog`|net6.0|1.58μs|0.611ns|2.29ns|0.0227| 0|0|1.64 KB| |#6003|`EnrichedLog`|netcoreapp3.1|2.19μs|0.757ns|2.73ns|0.0219| 0|0|1.64 KB| |#6003|`EnrichedLog`|net472|2.45μs|1.73ns|6.71ns|0.249| 0|0|1.57 KB|
Benchmarks.Trace.Log4netBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark: ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`EnrichedLog`|net6.0|114μs|152ns|588ns|0| 0|0|4.28 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`EnrichedLog`|netcoreapp3.1|119μs|165ns|641ns|0.0591| 0|0|4.28 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`EnrichedLog`|net472|147μs|190ns|735ns|0.662| 0.221|0|4.46 KB| |#6003|`EnrichedLog`|net6.0|113μs|147ns|570ns|0.0568| 0|0|4.28 KB| |#6003|`EnrichedLog`|netcoreapp3.1|120μs|139ns|539ns|0.0592| 0|0|4.28 KB| |#6003|`EnrichedLog`|net472|148μs|166ns|623ns|0.674| 0.225|0|4.46 KB|
Benchmarks.Trace.NLogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark: ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`EnrichedLog`|net6.0|3.11μs|0.957ns|3.45ns|0.0301| 0|0|2.2 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`EnrichedLog`|netcoreapp3.1|4.33μs|2.3ns|8.89ns|0.03| 0|0|2.2 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`EnrichedLog`|net472|5μs|1.53ns|5.94ns|0.321| 0|0|2.02 KB| |#6003|`EnrichedLog`|net6.0|3.15μs|1.36ns|5.25ns|0.0298| 0|0|2.2 KB| |#6003|`EnrichedLog`|netcoreapp3.1|4.23μs|1.91ns|7.14ns|0.0297| 0|0|2.2 KB| |#6003|`EnrichedLog`|net472|4.82μs|9.39ns|36.4ns|0.32| 0|0|2.02 KB|
Benchmarks.Trace.RedisBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark: ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`SendReceive`|net6.0|1.39μs|0.44ns|1.65ns|0.0159| 0|0|1.14 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`SendReceive`|netcoreapp3.1|1.72μs|1.16ns|4.49ns|0.0156| 0|0|1.14 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`SendReceive`|net472|2.06μs|1.47ns|5.5ns|0.183| 0.00103|0|1.16 KB| |#6003|`SendReceive`|net6.0|1.38μs|0.74ns|2.87ns|0.0162| 0|0|1.14 KB| |#6003|`SendReceive`|netcoreapp3.1|1.7μs|0.833ns|3.12ns|0.0153| 0|0|1.14 KB| |#6003|`SendReceive`|net472|2.15μs|1.25ns|4.68ns|0.183| 0|0|1.16 KB|
Benchmarks.Trace.SerilogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark: ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`EnrichedLog`|net6.0|2.87μs|0.882ns|3.42ns|0.0215| 0|0|1.6 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`EnrichedLog`|netcoreapp3.1|3.74μs|1.76ns|6.81ns|0.0225| 0|0|1.65 KB| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`EnrichedLog`|net472|4.4μs|1.28ns|4.44ns|0.324| 0|0|2.04 KB| |#6003|`EnrichedLog`|net6.0|2.85μs|0.814ns|3.15ns|0.0214| 0|0|1.6 KB| |#6003|`EnrichedLog`|netcoreapp3.1|3.8μs|3.36ns|12.6ns|0.0212| 0|0|1.65 KB| |#6003|`EnrichedLog`|net472|4.37μs|1.75ns|6.56ns|0.322| 0|0|2.04 KB|
Benchmarks.Trace.SpanBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark: ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`StartFinishSpan`|net6.0|395ns|0.367ns|1.37ns|0.00814| 0|0|576 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`StartFinishSpan`|netcoreapp3.1|593ns|1.16ns|4.48ns|0.00771| 0|0|576 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`StartFinishSpan`|net472|699ns|1.05ns|4.07ns|0.0916| 0|0|578 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`StartFinishScope`|net6.0|508ns|0.271ns|1.05ns|0.00985| 0|0|696 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`StartFinishScope`|netcoreapp3.1|703ns|0.456ns|1.77ns|0.00962| 0|0|696 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`StartFinishScope`|net472|848ns|0.78ns|3.02ns|0.104| 0|0|658 B| |#6003|`StartFinishSpan`|net6.0|390ns|0.311ns|1.21ns|0.00801| 0|0|576 B| |#6003|`StartFinishSpan`|netcoreapp3.1|559ns|0.924ns|3.46ns|0.00778| 0|0|576 B| |#6003|`StartFinishSpan`|net472|664ns|1.8ns|6.96ns|0.0915| 0|0|578 B| |#6003|`StartFinishScope`|net6.0|508ns|0.198ns|0.766ns|0.00974| 0|0|696 B| |#6003|`StartFinishScope`|netcoreapp3.1|708ns|0.788ns|3.05ns|0.00922| 0|0|696 B| |#6003|`StartFinishScope`|net472|848ns|0.714ns|2.77ns|0.104| 0|0|658 B|
Benchmarks.Trace.TraceAnnotationsBenchmark - Faster :tada: Same allocations :heavy_check_mark: #### Faster :tada: in #6003 | Benchmark | base/diff | Base Median (ns) | Diff Median (ns) | Modality | |:----------|-----------:|-----------:|--------:|--------:| | Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net6.0 | 1.181 | 718.32 | 608.33 | ### Raw results | Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | |---------|---------------------------- |-------------- |---------:|---------:|--------:|-------:|------:|------:|----------:| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`RunOnMethodBegin`|net6.0|718ns|0.511ns|1.98ns|0.00975| 0|0|696 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`RunOnMethodBegin`|netcoreapp3.1|850ns|0.786ns|3.05ns|0.00924| 0|0|696 B| |[master](https://github.com/DataDog/dd-trace-dotnet/tree/ecf5474189d2e6379dc41568cec1f5059198f57d)|`RunOnMethodBegin`|net472|1.08μs|1.93ns|7.49ns|0.104| 0|0|658 B| |#6003|`RunOnMethodBegin`|net6.0|608ns|0.52ns|2.01ns|0.00967| 0|0|696 B| |#6003|`RunOnMethodBegin`|netcoreapp3.1|925ns|0.317ns|1.19ns|0.00918| 0|0|696 B| |#6003|`RunOnMethodBegin`|net472|1.08μs|0.775ns|3ns|0.104| 0|0|658 B|
andrewlock commented 3 weeks ago

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 (6003) (11.168M)   : 0, 11168351
    master (11.231M)   : 0, 11231191
    benchmarks/2.9.0 (11.382M)   : 0, 11382231

    section Automatic
    This PR (6003) (7.424M)   : 0, 7423528
    master (7.515M)   : 0, 7514608
    benchmarks/2.9.0 (7.834M)   : 0, 7834075

    section Trace stats
    master (7.733M)   : 0, 7732900

    section Manual
    This PR (6003) (9.568M)   : crit ,0, 9568301
    master (11.202M)   : 0, 11202296

    section Manual + Automatic
    This PR (6003) (6.975M)   : 0, 6974936
    master (6.988M)   : 0, 6987518
gantt
    title Throughput Linux arm64 (Total requests) 
    dateFormat  X
    axisFormat %s
    section Baseline
    This PR (6003) (9.495M)   : 0, 9494503
    master (9.544M)   : 0, 9544174
    benchmarks/2.9.0 (9.745M)   : 0, 9744903

    section Automatic
    This PR (6003) (6.606M)   : 0, 6605523
    master (6.633M)   : 0, 6633210

    section Trace stats
    master (6.699M)   : 0, 6699486

    section Manual
    This PR (6003) (8.261M)   : crit ,0, 8261377
    master (9.456M)   : 0, 9455551

    section Manual + Automatic
    This PR (6003) (6.091M)   : 0, 6091086
    master (6.210M)   : 0, 6209519
gantt
    title Throughput Windows x64 (Total requests) 
    dateFormat  X
    axisFormat %s
    section Baseline
    This PR (6003) (9.860M)   : 0, 9860170
    master (10.276M)   : 0, 10276111
    benchmarks/2.9.0 (10.073M)   : 0, 10073079

    section Automatic
    This PR (6003) (6.727M)   : 0, 6727015
    master (6.636M)   : 0, 6635574
    benchmarks/2.9.0 (7.410M)   : 0, 7409502

    section Trace stats
    master (7.388M)   : 0, 7387724

    section Manual
    This PR (6003) (8.709M)   : crit ,0, 8708786
    master (9.906M)   : 0, 9906408

    section Manual + Automatic
    This PR (6003) (6.503M)   : 0, 6502921
    master (6.175M)   : 0, 6174678
datadog-ddstaging[bot] commented 2 weeks ago

Datadog Report

Branch report: gleocadie/fix-dliteratephdr-tests-v2 Commit report: d57fa60 Test service: dd-trace-dotnet

:white_check_mark: 0 Failed, 346415 Passed, 2091 Skipped, 15h 58m 30.51s Total Time :hourglass: 14 Performance Regressions

:hourglass: Performance Regressions vs Default Branch (14)

This report shows up to 5 performance regressions.

  • Profiler_cpu_walltime_old_stackwalk - scenarios 3.24s (+894.74ms, +38%) - Details
  • Profiler_cpu_walltime - scenarios 3.23s (+892.07ms, +38%) - Details
  • Profiler_walltime - scenarios 3.24s (+893.79ms, +38%) - Details
  • Profiler_cpu_walltime_timer_create - scenarios 3.24s (+900.03ms, +38%) - Details
  • Profiler_liveheap - scenarios 4.21s (+1.02s, +32%) - Details