Skip to content

Product mask support for DSM #6961

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

Merged
merged 9 commits into from
May 20, 2025
Merged

Product mask support for DSM #6961

merged 9 commits into from
May 20, 2025

Conversation

kr-igor
Copy link
Contributor

@kr-igor kr-igor commented May 12, 2025

Summary of changes

DSM backend will route payloads differently based on how the client which produced them was configured. This change mirrors the one done for Java .
Ticket DSMON-778.

Reason for change

This flag will allow us to better understand in which environments and with which configurations DSM is being run. The value of the tag is a bitmask which can be extended as needed in the future.

Implementation details

The DSM payload was extended with ProductMask field.

Test coverage

Existing tests were updated.

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented May 12, 2025

Datadog Summary

✅ Code Quality    ✅ Code Security    ✅ Dependencies

Test Optimization Report

All test runs 97cdca7 🔗

2 Total Test Services: 1 Failed, 1 Passed

Test Services
Service Name Failed Known Flaky New Flaky Passed Skipped Total Time Test Service View
dd-trace-dotnet 422 0 0 252365 2257 16h 59m 45.57s Link
exploration_tests 0 0 0 22085 3 2m 9.85s Link

❌ Failed Tests (422)

This report shows up to 5 failed tests.

  • SubmitsDsmMetrics - Datadog.Trace.ClrProfiler.IntegrationTests.AWS.DataStreamsMonitoringAwsKinesisTests - Details

    Expand for error
     Results do not match.
     Differences:
     Received: DataStreamsMonitoringAwsKinesisTests.NetCore.SchemaV1.received.txt
     Verified: DataStreamsMonitoringAwsKinesisTests.NetCore.SchemaV1.verified.txt
     Compare Result:
       {
         Env: integration_tests,
         Service: Samples.AWS.Kinesis,
         TracerVersion: <snip>,
         Lang: dotnet,
     ...
    
  • SubmitsDsmMetrics - Datadog.Trace.ClrProfiler.IntegrationTests.AWS.DataStreamsMonitoringAwsKinesisTests - Details

    Expand for error
     Results do not match.
     Differences:
     Received: DataStreamsMonitoringAwsKinesisTests.NetCore.SchemaV0.received.txt
     Verified: DataStreamsMonitoringAwsKinesisTests.NetCore.SchemaV0.verified.txt
     Compare Result:
       {
         Env: integration_tests,
         Service: Samples.AWS.Kinesis,
         TracerVersion: <snip>,
         Lang: dotnet,
     ...
    
  • SubmitsDsmMetrics - Datadog.Trace.ClrProfiler.IntegrationTests.AWS.DataStreamsMonitoringAwsKinesisTests - Details

    Expand for error
     Results do not match.
     Differences:
     Received: DataStreamsMonitoringAwsKinesisTests.NetCore.SchemaV0.received.txt
     Verified: DataStreamsMonitoringAwsKinesisTests.NetCore.SchemaV0.verified.txt
     Compare Result:
       {
         Env: integration_tests,
         Service: Samples.AWS.Kinesis,
         TracerVersion: <snip>,
         Lang: dotnet,
     ...
    
  • SubmitsDsmMetrics - Datadog.Trace.ClrProfiler.IntegrationTests.AWS.DataStreamsMonitoringAwsKinesisTests - Details

    Expand for error
     Results do not match.
     Differences:
     Received: DataStreamsMonitoringAwsKinesisTests.NetCore.SchemaV1.received.txt
     Verified: DataStreamsMonitoringAwsKinesisTests.NetCore.SchemaV1.verified.txt
     Compare Result:
       {
         Env: integration_tests,
         Service: Samples.AWS.Kinesis,
         TracerVersion: <snip>,
         Lang: dotnet,
     ...
    
  • SubmitsDsmMetrics - Datadog.Trace.ClrProfiler.IntegrationTests.AWS.DataStreamsMonitoringAwsKinesisTests - Details

    Expand for error
     Results do not match.
     Differences:
     Received: DataStreamsMonitoringAwsKinesisTests.NetCore.SchemaV0.received.txt
     Verified: DataStreamsMonitoringAwsKinesisTests.NetCore.SchemaV0.verified.txt
     Compare Result:
       {
         Env: integration_tests,
         Service: Samples.AWS.Kinesis,
         TracerVersion: <snip>,
         Lang: dotnet,
     ...
    

Was this helpful? Give us feedback!

@pr-commenter
Copy link

pr-commenter bot commented May 12, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #6961 compared to master:

  • All benchmarks have the same speed
  • 2 benchmarks have fewer allocations
  • 5 benchmarks have more allocations

The following thresholds were used for comparing the benchmark speeds:

  • Mann–Whitney U test with statistical test for significance of 5%
  • Only results indicating a difference greater than 10% and 0.3 ns are considered.

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.ActivityBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #6961

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 6.14 KB 6.22 KB 82 B 1.34%
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net6.0 5.54 KB 5.6 KB 52 B 0.94%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 11μs 58.8ns 322ns 0 0 0 5.54 KB
master StartStopWithChild netcoreapp3.1 13.9μs 50.3ns 195ns 0 0 0 5.74 KB
master StartStopWithChild net472 22μs 90.9ns 328ns 1.01 0.336 0.112 6.14 KB
#6961 StartStopWithChild net6.0 10.5μs 59.9ns 415ns 0 0 0 5.6 KB
#6961 StartStopWithChild netcoreapp3.1 13.5μs 60.7ns 235ns 0 0 0 5.76 KB
#6961 StartStopWithChild net472 22.1μs 113ns 554ns 0.982 0.327 0 6.22 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 937μs 113ns 423ns 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.02ms 108ns 373ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.24ms 45.9ns 172ns 0 0 0 3.31 KB
#6961 WriteAndFlushEnrichedTraces net6.0 928μs 76ns 294ns 0 0 0 2.71 KB
#6961 WriteAndFlushEnrichedTraces netcoreapp3.1 1.03ms 355ns 1.38μs 0 0 0 2.7 KB
#6961 WriteAndFlushEnrichedTraces net472 1.23ms 58.3ns 226ns 0 0 0 3.31 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 327μs 1.43μs 5.53μs 0 0 0 197.06 KB
master AllCycleSimpleBody netcoreapp3.1 486μs 277ns 1.04μs 0 0 0 204.77 KB
master AllCycleSimpleBody net472 435μs 103ns 397ns 36.6 2.16 0 236.35 KB
master AllCycleMoreComplexBody net6.0 333μs 790ns 3.06μs 0 0 0 200.57 KB
master AllCycleMoreComplexBody netcoreapp3.1 492μs 1.12μs 4.33μs 0 0 0 208.18 KB
master AllCycleMoreComplexBody net472 445μs 117ns 438ns 36.6 2.16 0 239.87 KB
master ObjectExtractorSimpleBody net6.0 312ns 0.0985ns 0.369ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 398ns 2.15ns 10.9ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 310ns 0.147ns 0.569ns 0.0437 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.31μs 30.6ns 133ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.83μs 32.1ns 124ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.79μs 8.01ns 31ns 0.574 0 0 3.8 KB
#6961 AllCycleSimpleBody net6.0 330μs 1.27μs 4.91μs 0 0 0 197.06 KB
#6961 AllCycleSimpleBody netcoreapp3.1 505μs 2.03μs 7.85μs 0 0 0 204.77 KB
#6961 AllCycleSimpleBody net472 433μs 174ns 628ns 36.6 2.16 0 236.35 KB
#6961 AllCycleMoreComplexBody net6.0 338μs 1.64μs 6.14μs 0 0 0 200.56 KB
#6961 AllCycleMoreComplexBody netcoreapp3.1 497μs 1.98μs 7.68μs 0 0 0 208.18 KB
#6961 AllCycleMoreComplexBody net472 449μs 134ns 519ns 37.9 2.23 0 239.88 KB
#6961 ObjectExtractorSimpleBody net6.0 313ns 0.157ns 0.588ns 0 0 0 280 B
#6961 ObjectExtractorSimpleBody netcoreapp3.1 392ns 2.19ns 13.9ns 0 0 0 272 B
#6961 ObjectExtractorSimpleBody net472 302ns 0.0841ns 0.315ns 0.0445 0 0 281 B
#6961 ObjectExtractorMoreComplexBody net6.0 6.47μs 30ns 116ns 0 0 0 3.78 KB
#6961 ObjectExtractorMoreComplexBody netcoreapp3.1 7.71μs 20ns 77.5ns 0 0 0 3.69 KB
#6961 ObjectExtractorMoreComplexBody net472 6.69μs 3.97ns 14.9ns 0.603 0 0 3.8 KB
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - Unknown 🤷 Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EncodeArgs net6.0 N/A N/A N/A NaN NaN NaN 0 b
master EncodeArgs netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
master EncodeArgs net472 N/A N/A N/A NaN NaN NaN 0 b
master EncodeLegacyArgs net6.0 N/A N/A N/A NaN NaN NaN 0 b
master EncodeLegacyArgs netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
master EncodeLegacyArgs net472 N/A N/A N/A NaN NaN NaN 0 b
#6961 EncodeArgs net6.0 N/A N/A N/A NaN NaN NaN 0 b
#6961 EncodeArgs netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
#6961 EncodeArgs net472 N/A N/A N/A NaN NaN NaN 0 b
#6961 EncodeLegacyArgs net6.0 N/A N/A N/A NaN NaN NaN 0 b
#6961 EncodeLegacyArgs netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
#6961 EncodeLegacyArgs net472 N/A N/A N/A NaN NaN NaN 0 b
Benchmarks.Trace.Asm.AppSecWafBenchmark - Unknown 🤷 Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 N/A N/A N/A NaN NaN NaN 0 b
master RunWafRealisticBenchmark netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
master RunWafRealisticBenchmark net472 N/A N/A N/A NaN NaN NaN 0 b
master RunWafRealisticBenchmarkWithAttack net6.0 N/A N/A N/A NaN NaN NaN 0 b
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
master RunWafRealisticBenchmarkWithAttack net472 N/A N/A N/A NaN NaN NaN 0 b
#6961 RunWafRealisticBenchmark net6.0 N/A N/A N/A NaN NaN NaN 0 b
#6961 RunWafRealisticBenchmark netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
#6961 RunWafRealisticBenchmark net472 N/A N/A N/A NaN NaN NaN 0 b
#6961 RunWafRealisticBenchmarkWithAttack net6.0 N/A N/A N/A NaN NaN NaN 0 b
#6961 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
#6961 RunWafRealisticBenchmarkWithAttack net472 N/A N/A N/A NaN NaN NaN 0 b
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 61.4μs 36.2ns 135ns 0 0 0 14.53 KB
master SendRequest netcoreapp3.1 71.8μs 351ns 1.45μs 0 0 0 17.51 KB
master SendRequest net472 0.0268ns 0.00138ns 0.00533ns 0 0 0 0 b
#6961 SendRequest net6.0 60.5μs 28.2ns 102ns 0 0 0 14.53 KB
#6961 SendRequest netcoreapp3.1 72μs 105ns 408ns 0 0 0 17.42 KB
#6961 SendRequest net472 0.00684ns 0.002ns 0.00774ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #6961

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 56.56 KB 56.12 KB -443 B -0.78%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 616μs 1.5μs 5.83μs 0 0 0 41.67 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 694μs 4.06μs 37.2μs 0 0 0 41.97 KB
master WriteAndFlushEnrichedTraces net472 898μs 4.67μs 22.4μs 8.33 0 0 56.56 KB
#6961 WriteAndFlushEnrichedTraces net6.0 680μs 923ns 3.45μs 0 0 0 41.74 KB
#6961 WriteAndFlushEnrichedTraces netcoreapp3.1 692μs 2.25μs 8.71μs 0 0 0 42.12 KB
#6961 WriteAndFlushEnrichedTraces net472 905μs 1.6μs 6.2μs 8.33 0 0 56.12 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.96μs 1.93ns 7.24ns 0 0 0 1.03 KB
master ExecuteNonQuery netcoreapp3.1 2.46μs 5.6ns 21.7ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.71μs 2.91ns 11.3ns 0.149 0.0135 0 995 B
#6961 ExecuteNonQuery net6.0 1.98μs 5.46ns 20.4ns 0 0 0 1.03 KB
#6961 ExecuteNonQuery netcoreapp3.1 2.39μs 10.3ns 39.9ns 0 0 0 1.02 KB
#6961 ExecuteNonQuery net472 2.8μs 4.4ns 17ns 0.149 0.0136 0 995 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.75μs 1.57ns 6.09ns 0 0 0 1.04 KB
master CallElasticsearch netcoreapp3.1 2.37μs 4.07ns 15.7ns 0 0 0 1.04 KB
master CallElasticsearch net472 3.64μs 2.64ns 10.2ns 0.165 0 0 1.05 KB
master CallElasticsearchAsync net6.0 1.85μs 8.46ns 32.8ns 0 0 0 1.02 KB
master CallElasticsearchAsync netcoreapp3.1 2.35μs 9.06ns 35.1ns 0 0 0 1.09 KB
master CallElasticsearchAsync net472 3.78μs 3.35ns 12.1ns 0.17 0 0 1.11 KB
#6961 CallElasticsearch net6.0 1.78μs 8.88ns 36.6ns 0 0 0 1.04 KB
#6961 CallElasticsearch netcoreapp3.1 2.26μs 11.7ns 52.2ns 0 0 0 1.04 KB
#6961 CallElasticsearch net472 3.47μs 3.64ns 14.1ns 0.156 0 0 1.05 KB
#6961 CallElasticsearchAsync net6.0 1.91μs 5.87ns 22.7ns 0 0 0 1.02 KB
#6961 CallElasticsearchAsync netcoreapp3.1 2.33μs 8.49ns 32.9ns 0 0 0 1.09 KB
#6961 CallElasticsearchAsync net472 4.08μs 6.5ns 25.2ns 0.164 0 0 1.11 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.85μs 0.824ns 3.19ns 0 0 0 960 B
master ExecuteAsync netcoreapp3.1 2.31μs 6.5ns 24.3ns 0 0 0 960 B
master ExecuteAsync net472 2.57μs 1.62ns 6.26ns 0.142 0 0 923 B
#6961 ExecuteAsync net6.0 1.92μs 2.04ns 7.91ns 0 0 0 960 B
#6961 ExecuteAsync netcoreapp3.1 2.42μs 4ns 15.5ns 0 0 0 960 B
#6961 ExecuteAsync net472 2.69μs 4.05ns 15.1ns 0.134 0 0 923 B
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 6.97μs 15.3ns 59.1ns 0 0 0 2.37 KB
master SendAsync netcoreapp3.1 8.4μs 10.5ns 40.6ns 0 0 0 2.9 KB
master SendAsync net472 12.3μs 7.47ns 28ns 0.492 0 0 3.19 KB
#6961 SendAsync net6.0 6.78μs 17.8ns 68.8ns 0 0 0 2.37 KB
#6961 SendAsync netcoreapp3.1 8.79μs 6.14ns 23ns 0 0 0 2.9 KB
#6961 SendAsync net472 12.2μs 7.72ns 28.9ns 0.49 0 0 3.19 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #6961

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net472 57.34 KB 65.54 KB 8.19 KB 14.29%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net472 279.91 KB 286.72 KB 6.81 KB 2.43%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 247.42 KB 252.46 KB 5.05 KB 2.04%

Fewer allocations 🎉 in #6961

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 272.74 KB 258.99 KB -13.74 KB -5.04%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 44.5μs 223ns 1.92μs 0 0 0 43.78 KB
master StringConcatBenchmark netcoreapp3.1 48.6μs 231ns 1.41μs 0 0 0 42.68 KB
master StringConcatBenchmark net472 56.8μs 103ns 373ns 0 0 0 57.34 KB
master StringConcatAspectBenchmark net6.0 437μs 2.18μs 9.26μs 0 0 0 247.42 KB
master StringConcatAspectBenchmark netcoreapp3.1 532μs 2.41μs 9.02μs 0 0 0 272.74 KB
master StringConcatAspectBenchmark net472 402μs 2.32μs 18.3μs 0 0 0 279.91 KB
#6961 StringConcatBenchmark net6.0 41.8μs 125ns 449ns 0 0 0 43.78 KB
#6961 StringConcatBenchmark netcoreapp3.1 50.9μs 460ns 4.51μs 0 0 0 42.78 KB
#6961 StringConcatBenchmark net472 56.1μs 207ns 773ns 0 0 0 65.54 KB
#6961 StringConcatAspectBenchmark net6.0 463μs 784ns 2.93μs 0 0 0 252.46 KB
#6961 StringConcatAspectBenchmark netcoreapp3.1 512μs 1.59μs 5.75μs 0 0 0 258.99 KB
#6961 StringConcatAspectBenchmark net472 408μs 1.97μs 10μs 0 0 0 286.72 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.62μs 5.8ns 22.5ns 0 0 0 1.76 KB
master EnrichedLog netcoreapp3.1 3.48μs 11.3ns 43.6ns 0 0 0 1.76 KB
master EnrichedLog net472 3.91μs 2.7ns 10.1ns 0.254 0 0 1.69 KB
#6961 EnrichedLog net6.0 2.65μs 3.2ns 12.4ns 0 0 0 1.76 KB
#6961 EnrichedLog netcoreapp3.1 3.43μs 14.9ns 57.7ns 0 0 0 1.76 KB
#6961 EnrichedLog net472 3.82μs 2.64ns 10.2ns 0.267 0 0 1.69 KB
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 123μs 93.5ns 350ns 0 0 0 4.37 KB
master EnrichedLog netcoreapp3.1 128μs 540ns 1.95μs 0 0 0 4.37 KB
master EnrichedLog net472 167μs 90.7ns 351ns 0 0 0 4.57 KB
#6961 EnrichedLog net6.0 123μs 164ns 615ns 0 0 0 4.37 KB
#6961 EnrichedLog netcoreapp3.1 127μs 146ns 547ns 0 0 0 4.37 KB
#6961 EnrichedLog net472 165μs 119ns 459ns 0 0 0 4.57 KB
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 5.06μs 3.52ns 13.6ns 0 0 0 2.32 KB
master EnrichedLog netcoreapp3.1 6.68μs 16.1ns 62.3ns 0 0 0 2.32 KB
master EnrichedLog net472 7.43μs 5.66ns 21.2ns 0.336 0 0 2.14 KB
#6961 EnrichedLog net6.0 4.81μs 15.4ns 55.4ns 0 0 0 2.32 KB
#6961 EnrichedLog netcoreapp3.1 6.54μs 28.1ns 109ns 0 0 0 2.32 KB
#6961 EnrichedLog net472 7.41μs 11.2ns 43.5ns 0.332 0 0 2.14 KB
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 2.01μs 10.1ns 42.7ns 0 0 0 1.21 KB
master SendReceive netcoreapp3.1 2.59μs 9.98ns 38.7ns 0 0 0 1.21 KB
master SendReceive net472 3.13μs 2.23ns 8.62ns 0.188 0 0 1.21 KB
#6961 SendReceive net6.0 2μs 10.4ns 50.1ns 0 0 0 1.21 KB
#6961 SendReceive netcoreapp3.1 2.55μs 1.89ns 7.32ns 0 0 0 1.21 KB
#6961 SendReceive net472 3.18μs 4.4ns 17.1ns 0.191 0 0 1.21 KB
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 4.26μs 3.63ns 13.6ns 0 0 0 1.64 KB
master EnrichedLog netcoreapp3.1 5.66μs 10.6ns 40.9ns 0 0 0 1.69 KB
master EnrichedLog net472 6.58μs 5.09ns 19.7ns 0.327 0 0 2.08 KB
#6961 EnrichedLog net6.0 4.19μs 10ns 38.9ns 0 0 0 1.64 KB
#6961 EnrichedLog netcoreapp3.1 5.65μs 19.2ns 74.4ns 0 0 0 1.69 KB
#6961 EnrichedLog net472 6.51μs 5.9ns 22.9ns 0.325 0 0 2.08 KB
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 746ns 3.28ns 12.7ns 0 0 0 584 B
master StartFinishSpan netcoreapp3.1 945ns 1ns 3.88ns 0 0 0 584 B
master StartFinishSpan net472 941ns 0.51ns 1.98ns 0.0897 0 0 586 B
master StartFinishScope net6.0 896ns 0.334ns 1.25ns 0 0 0 704 B
master StartFinishScope netcoreapp3.1 1.16μs 5.55ns 22.2ns 0 0 0 704 B
master StartFinishScope net472 1.19μs 0.357ns 1.29ns 0.101 0 0 666 B
#6961 StartFinishSpan net6.0 748ns 3.45ns 13.8ns 0 0 0 584 B
#6961 StartFinishSpan netcoreapp3.1 944ns 4.91ns 24.5ns 0 0 0 584 B
#6961 StartFinishSpan net472 919ns 0.289ns 1.12ns 0.0923 0 0 586 B
#6961 StartFinishScope net6.0 892ns 4.66ns 21.9ns 0 0 0 704 B
#6961 StartFinishScope netcoreapp3.1 1.17μs 5.4ns 20.9ns 0 0 0 704 B
#6961 StartFinishScope net472 1.13μs 0.27ns 1.04ns 0.101 0 0 666 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 1.03μs 4.9ns 20.2ns 0 0 0 704 B
master RunOnMethodBegin netcoreapp3.1 1.41μs 6.94ns 28.6ns 0 0 0 704 B
master RunOnMethodBegin net472 1.39μs 1.47ns 5.7ns 0.105 0 0 666 B
#6961 RunOnMethodBegin net6.0 1μs 5.22ns 23.9ns 0 0 0 704 B
#6961 RunOnMethodBegin netcoreapp3.1 1.35μs 6.83ns 29.8ns 0 0 0 704 B
#6961 RunOnMethodBegin net472 1.38μs 1.03ns 3.97ns 0.103 0 0 666 B

@andrewlock
Copy link
Member

andrewlock commented May 12, 2025

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:

  • 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).

gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6961) - mean (68ms)  : 66, 69
     .   : milestone, 68,
    master - mean (68ms)  : 66, 70
     .   : milestone, 68,

    section CallTarget+Inlining+NGEN
    This PR (6961) - mean (1,008ms)  : 987, 1028
     .   : milestone, 1008,
    master - mean (1,006ms)  : 982, 1031
     .   : milestone, 1006,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6961) - mean (102ms)  : 100, 104
     .   : milestone, 102,
    master - mean (102ms)  : 100, 105
     .   : milestone, 102,

    section CallTarget+Inlining+NGEN
    This PR (6961) - mean (697ms)  : 680, 714
     .   : milestone, 697,
    master - mean (692ms)  : 676, 709
     .   : milestone, 692,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6961) - mean (88ms)  : 86, 91
     .   : milestone, 88,
    master - mean (89ms)  : 87, 91
     .   : milestone, 89,

    section CallTarget+Inlining+NGEN
    This PR (6961) - mean (652ms)  : 632, 672
     .   : milestone, 652,
    master - mean (652ms)  : 632, 672
     .   : milestone, 652,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6961) - mean (190ms)  : 183, 197
     .   : milestone, 190,
    master - mean (190ms)  : 186, 193
     .   : milestone, 190,

    section CallTarget+Inlining+NGEN
    This PR (6961) - mean (1,111ms)  : 1089, 1134
     .   : milestone, 1111,
    master - mean (1,109ms)  : 1083, 1135
     .   : milestone, 1109,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6961) - mean (269ms)  : 265, 273
     .   : milestone, 269,
    master - mean (269ms)  : 264, 274
     .   : milestone, 269,

    section CallTarget+Inlining+NGEN
    This PR (6961) - mean (879ms)  : 851, 907
     .   : milestone, 879,
    master - mean (877ms)  : 849, 905
     .   : milestone, 877,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6961) - mean (261ms)  : 258, 265
     .   : milestone, 261,
    master - mean (260ms)  : 257, 264
     .   : milestone, 260,

    section CallTarget+Inlining+NGEN
    This PR (6961) - mean (869ms)  : 838, 900
     .   : milestone, 869,
    master - mean (869ms)  : 832, 906
     .   : milestone, 869,

Loading

Copy link
Contributor

Snapshots difference summary

The following differences have been observed in committed snapshots. It is meant to help the reviewer.
The diff is simplistic, so please check some files anyway while we improve it.

13 occurrences of :

+  ProductMask: 3

@kr-igor kr-igor marked this pull request as ready for review May 13, 2025 16:47
@kr-igor kr-igor requested review from a team as code owners May 13, 2025 16:47
@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented May 13, 2025

Datadog Report

All test runs 07c93aa 🔗

2 Total Test Services: 0 Failed, 2 Passed
1 with Regressions

Test Services
Service Name Failed Known Flaky New Flaky Passed Skipped Total Time Performance Regressions Test Service View
dd-trace-dotnet 0 0 0 246476 2295 17h 38m 53.21s 3 Link
exploration_tests 0 0 0 22085 3 2m 14.38s 0 Link

⌛ Performance Regressions vs Default Branch (3)

  • Profiler_exceptions_cpu_walltime - scenarios 3.57s (+241.07ms, +7%) - Details
  • Profiler_exceptions - scenarios 3.58s (+249.15ms, +7%) - Details
  • Baseline_exception - scenarios 3.58s (+239.78ms, +7%) - Details

Comment on lines 20 to 23
private const int ApmProduct = 1; // 00000001
private const int DsmProduct = 2; // 00000010
private const int DjmProduct = 4; // 00000100, not used in .NET, but needs to be in sync with other languages, hence the unused constant
private const int ProfilingProduct = 8; // 00001000
Copy link
Member

@lucaspimentel lucaspimentel May 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small C# style comment: this would normally be done as an enum with [Flags]. Something like

    [Flags]
    internal enum Products
    {
        Apm = 1,       // 00000001
        Dsm = 2,       // 00000010
        Djm = 4,       // 00000100
        Profiling = 8, // 00001000
    }

    internal class DataStreamsMessagePackFormatter
    {

Copy link
Member

@lucaspimentel lucaspimentel May 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can also use this syntax (introduced in C# 7) instead of comments:

Apm = 0b00000001
Dsm = 0b00000010
Djm = 0b00000100

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or another option (a personal preference):

internal class DataStreamsMessagePackFormatter
{
    // note that the enum can still be private and nested to encapsulate it 
    [Flags]
    private enum Products
    {
        None = 0, // This should be explicit IMO for Flags enums
        Apm = 1,            // 00000001
        Dsm = 1 << 1,       // 00000010
        Djm = 1 << 2,       // 00000100
        Profiling = 1 << 3, // 00001000
    }
}

Note also you can use separators in the binary version:

Apm = 0b0000_0001
Dsm = 0b0000_0010
Djm = 0b0000_0100

@kr-igor kr-igor merged commit 726bb6e into master May 20, 2025
129 of 130 checks passed
@kr-igor kr-igor deleted the kr-igor/dsm-payload-masking branch May 20, 2025 15:23
@github-actions github-actions bot added this to the vNext-v3 milestone May 20, 2025
@andrewlock andrewlock added libdatadog Updates to the libdatadog library and Rust integration type:enhancement Improvement to an existing feature area:data-streams-monitoring and removed libdatadog Updates to the libdatadog library and Rust integration labels May 23, 2025
andrewlock added a commit that referenced this pull request May 23, 2025
## Summary of changes

Removes the scheduled SSI run

## Reason for change

A recent PR #6961
resulted in the SSI run failing. We're not convinced this run provides a
lot of value now anyway, now that we have the dedicated onboarding
tests, so removing the run to unblock `master`

## Implementation details

Delete the scheduled SSI run and associated `IS_SSI_RUN` variable

## Test coverage

N/A

## Other details

We will likely advise other languages to do the same
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:data-streams-monitoring type:enhancement Improvement to an existing feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants