dd-trace-java icon indicating copy to clipboard operation
dd-trace-java copied to clipboard

Add DSM checkpoint for S3 calls in aws-sdk-1

Open paul-laffon-dd opened this issue 1 year ago • 1 comments
trafficstars

What Does This Do

Add DSM checkpoint when reading/writing to S3 using aws-sdk-1

Motivation

Connect services based on which data they are reading/writing in S3

Additional Notes

Using the Content-Length header in order to get the payload size

Adding two new DSM tags:

  • ds.name: full path to the object
  • ds.namespace bucket of the object

paul-laffon-dd avatar Mar 14 '24 15:03 paul-laffon-dd

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master paul.laffon/s3-dsm-checkpoint
git_commit_date 1710419725 1710434230
git_commit_sha 8d4f9c2c40 7f22f3ca7e
release_version 1.32.0-SNAPSHOT~8d4f9c2c40 1.32.0-SNAPSHOT~7f22f3ca7e
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1710437759 1710437759
ci_job_id 460010949 460010949
ci_pipeline_id 30115838 30115838
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
module Agent Agent
parent None None
variant iast iast

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 53 metrics, 10 unstable metrics.

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.32.0-SNAPSHOT~7f22f3ca7e, baseline=1.32.0-SNAPSHOT~8d4f9c2c40

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.086 s) : 0, 1085642
Total [baseline] (9.198 s) : 0, 9197749
Agent [candidate] (1.08 s) : 0, 1079655
Total [candidate] (9.187 s) : 0, 9187083
section appsec
Agent [baseline] (1.21 s) : 0, 1209510
Total [baseline] (9.281 s) : 0, 9281129
Agent [candidate] (1.205 s) : 0, 1205174
Total [candidate] (9.308 s) : 0, 9307718
section iast
Agent [baseline] (1.206 s) : 0, 1206243
Total [baseline] (9.34 s) : 0, 9339720
Agent [candidate] (1.206 s) : 0, 1205605
Total [candidate] (9.339 s) : 0, 9338698
section profiling
Agent [baseline] (1.286 s) : 0, 1285891
Total [baseline] (9.397 s) : 0, 9397167
Agent [candidate] (1.274 s) : 0, 1273683
Total [candidate] (9.375 s) : 0, 9375362
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.086 s -
Agent appsec 1.21 s 123.868 ms (11.4%)
Agent iast 1.206 s 120.601 ms (11.1%)
Agent profiling 1.286 s 200.249 ms (18.4%)
Total tracing 9.198 s -
Total appsec 9.281 s 83.381 ms (0.9%)
Total iast 9.34 s 141.971 ms (1.5%)
Total profiling 9.397 s 199.418 ms (2.2%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.08 s -
Agent appsec 1.205 s 125.519 ms (11.6%)
Agent iast 1.206 s 125.95 ms (11.7%)
Agent profiling 1.274 s 194.028 ms (18.0%)
Total tracing 9.187 s -
Total appsec 9.308 s 120.634 ms (1.3%)
Total iast 9.339 s 151.615 ms (1.7%)
Total profiling 9.375 s 188.278 ms (2.0%)
gantt
    title petclinic - break down per module: candidate=1.32.0-SNAPSHOT~7f22f3ca7e, baseline=1.32.0-SNAPSHOT~8d4f9c2c40

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (700.771 ms) : 0, 700771
BytebuddyAgent [candidate] (695.767 ms) : 0, 695767
GlobalTracer [baseline] (292.82 ms) : 0, 292820
GlobalTracer [candidate] (292.275 ms) : 0, 292275
AppSec [baseline] (48.928 ms) : 0, 48928
AppSec [candidate] (48.881 ms) : 0, 48881
Remote Config [baseline] (742.911 µs) : 0, 743
Remote Config [candidate] (741.089 µs) : 0, 741
Telemetry [baseline] (7.817 ms) : 0, 7817
Telemetry [candidate] (7.751 ms) : 0, 7751
section appsec
BytebuddyAgent [baseline] (702.122 ms) : 0, 702122
BytebuddyAgent [candidate] (698.6 ms) : 0, 698600
GlobalTracer [baseline] (293.311 ms) : 0, 293311
GlobalTracer [candidate] (292.829 ms) : 0, 292829
AppSec [baseline] (153.949 ms) : 0, 153949
AppSec [candidate] (153.699 ms) : 0, 153699
IAST [baseline] (18.012 ms) : 0, 18012
IAST [candidate] (18.046 ms) : 0, 18046
Remote Config [baseline] (614.578 µs) : 0, 615
Remote Config [candidate] (613.86 µs) : 0, 614
Telemetry [baseline] (6.91 ms) : 0, 6910
Telemetry [candidate] (6.919 ms) : 0, 6919
section iast
BytebuddyAgent [baseline] (801.797 ms) : 0, 801797
BytebuddyAgent [candidate] (801.156 ms) : 0, 801156
GlobalTracer [baseline] (288.96 ms) : 0, 288960
GlobalTracer [candidate] (289.575 ms) : 0, 289575
AppSec [baseline] (51.577 ms) : 0, 51577
AppSec [candidate] (50.493 ms) : 0, 50493
IAST [baseline] (22.289 ms) : 0, 22289
IAST [candidate] (22.844 ms) : 0, 22844
Remote Config [baseline] (608.185 µs) : 0, 608
Remote Config [candidate] (593.226 µs) : 0, 593
Telemetry [baseline] (6.622 ms) : 0, 6622
Telemetry [candidate] (6.546 ms) : 0, 6546
section profiling
BytebuddyAgent [baseline] (697.205 ms) : 0, 697205
BytebuddyAgent [candidate] (689.436 ms) : 0, 689436
GlobalTracer [baseline] (378.794 ms) : 0, 378794
GlobalTracer [candidate] (375.965 ms) : 0, 375965
AppSec [baseline] (50.028 ms) : 0, 50028
AppSec [candidate] (49.534 ms) : 0, 49534
Remote Config [baseline] (798.866 µs) : 0, 799
Remote Config [candidate] (795.919 µs) : 0, 796
Telemetry [baseline] (7.494 ms) : 0, 7494
Telemetry [candidate] (7.399 ms) : 0, 7399
ProfilingAgent [baseline] (94.733 ms) : 0, 94733
ProfilingAgent [candidate] (94.473 ms) : 0, 94473
Profiling [baseline] (94.756 ms) : 0, 94756
Profiling [candidate] (94.498 ms) : 0, 94498
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.32.0-SNAPSHOT~7f22f3ca7e, baseline=1.32.0-SNAPSHOT~8d4f9c2c40

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.082 s) : 0, 1081532
Total [baseline] (8.553 s) : 0, 8553360
Agent [candidate] (1.082 s) : 0, 1082293
Total [candidate] (8.578 s) : 0, 8578277
section iast
Agent [baseline] (1.211 s) : 0, 1211101
Total [baseline] (9.048 s) : 0, 9048327
Agent [candidate] (1.205 s) : 0, 1205160
Total [candidate] (9.029 s) : 0, 9028781
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.211 s) : 0, 1211180
Total [baseline] (9.026 s) : 0, 9026246
Agent [candidate] (1.208 s) : 0, 1208363
Total [candidate] (9.016 s) : 0, 9016309
section iast_TELEMETRY_OFF
Agent [baseline] (1.206 s) : 0, 1206070
Total [baseline] (9.071 s) : 0, 9071160
Agent [candidate] (1.198 s) : 0, 1197737
Total [candidate] (9.033 s) : 0, 9033110
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.082 s -
Agent iast 1.211 s 129.57 ms (12.0%)
Agent iast_HARDCODED_SECRET_DISABLED 1.211 s 129.648 ms (12.0%)
Agent iast_TELEMETRY_OFF 1.206 s 124.538 ms (11.5%)
Total tracing 8.553 s -
Total iast 9.048 s 494.967 ms (5.8%)
Total iast_HARDCODED_SECRET_DISABLED 9.026 s 472.885 ms (5.5%)
Total iast_TELEMETRY_OFF 9.071 s 517.8 ms (6.1%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.082 s -
Agent iast 1.205 s 122.867 ms (11.4%)
Agent iast_HARDCODED_SECRET_DISABLED 1.208 s 126.07 ms (11.6%)
Agent iast_TELEMETRY_OFF 1.198 s 115.444 ms (10.7%)
Total tracing 8.578 s -
Total iast 9.029 s 450.504 ms (5.3%)
Total iast_HARDCODED_SECRET_DISABLED 9.016 s 438.032 ms (5.1%)
Total iast_TELEMETRY_OFF 9.033 s 454.833 ms (5.3%)
gantt
    title insecure-bank - break down per module: candidate=1.32.0-SNAPSHOT~7f22f3ca7e, baseline=1.32.0-SNAPSHOT~8d4f9c2c40

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (698.072 ms) : 0, 698072
BytebuddyAgent [candidate] (698.376 ms) : 0, 698376
GlobalTracer [baseline] (291.595 ms) : 0, 291595
GlobalTracer [candidate] (292.063 ms) : 0, 292063
AppSec [baseline] (48.82 ms) : 0, 48820
AppSec [candidate] (48.867 ms) : 0, 48867
Remote Config [baseline] (731.318 µs) : 0, 731
Remote Config [candidate] (736.916 µs) : 0, 737
Telemetry [baseline] (7.886 ms) : 0, 7886
Telemetry [candidate] (7.822 ms) : 0, 7822
section iast
BytebuddyAgent [baseline] (805.734 ms) : 0, 805734
BytebuddyAgent [candidate] (799.683 ms) : 0, 799683
GlobalTracer [baseline] (290.428 ms) : 0, 290428
GlobalTracer [candidate] (289.555 ms) : 0, 289555
AppSec [baseline] (50.097 ms) : 0, 50097
AppSec [candidate] (48.705 ms) : 0, 48705
IAST [baseline] (23.029 ms) : 0, 23029
IAST [candidate] (24.626 ms) : 0, 24626
Remote Config [baseline] (603.852 µs) : 0, 604
Remote Config [candidate] (611.363 µs) : 0, 611
Telemetry [baseline] (6.643 ms) : 0, 6643
Telemetry [candidate] (7.395 ms) : 0, 7395
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (805.056 ms) : 0, 805056
BytebuddyAgent [candidate] (803.917 ms) : 0, 803917
GlobalTracer [baseline] (290.469 ms) : 0, 290469
GlobalTracer [candidate] (289.381 ms) : 0, 289381
AppSec [baseline] (51.096 ms) : 0, 51096
AppSec [candidate] (49.441 ms) : 0, 49441
IAST [baseline] (22.851 ms) : 0, 22851
IAST [candidate] (23.753 ms) : 0, 23753
Remote Config [baseline] (617.526 µs) : 0, 618
Remote Config [candidate] (606.262 µs) : 0, 606
Telemetry [baseline] (6.587 ms) : 0, 6587
Telemetry [candidate] (6.598 ms) : 0, 6598
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (798.705 ms) : 0, 798705
BytebuddyAgent [candidate] (792.676 ms) : 0, 792676
GlobalTracer [baseline] (291.131 ms) : 0, 291131
GlobalTracer [candidate] (289.507 ms) : 0, 289507
AppSec [baseline] (49.666 ms) : 0, 49666
AppSec [candidate] (47.886 ms) : 0, 47886
IAST [baseline] (25.016 ms) : 0, 25016
IAST [candidate] (26.356 ms) : 0, 26356
Remote Config [baseline] (578.752 µs) : 0, 579
Remote Config [candidate] (568.896 µs) : 0, 569
Telemetry [baseline] (6.49 ms) : 0, 6490
Telemetry [candidate] (6.425 ms) : 0, 6425

Load

Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.32.0-SNAPSHOT~7f22f3ca7e, baseline=1.32.0-SNAPSHOT~8d4f9c2c40
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.337 ms) : 1318, 1356
.   : milestone, 1337,
appsec (1.772 ms) : 1748, 1795
.   : milestone, 1772,
iast (1.513 ms) : 1490, 1537
.   : milestone, 1513,
profiling (1.587 ms) : 1562, 1612
.   : milestone, 1587,
tracing (1.51 ms) : 1487, 1533
.   : milestone, 1510,
section candidate
no_agent (1.355 ms) : 1336, 1373
.   : milestone, 1355,
appsec (1.768 ms) : 1745, 1792
.   : milestone, 1768,
iast (1.522 ms) : 1499, 1544
.   : milestone, 1522,
profiling (1.545 ms) : 1520, 1570
.   : milestone, 1545,
tracing (1.496 ms) : 1473, 1519
.   : milestone, 1496,
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.337 ms [1.318 ms, 1.356 ms] -
appsec 1.772 ms [1.748 ms, 1.795 ms] 434.49 µs (32.5%)
iast 1.513 ms [1.49 ms, 1.537 ms] 175.992 µs (13.2%)
profiling 1.587 ms [1.562 ms, 1.612 ms] 249.404 µs (18.6%)
tracing 1.51 ms [1.487 ms, 1.533 ms] 172.894 µs (12.9%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.355 ms [1.336 ms, 1.373 ms] -
appsec 1.768 ms [1.745 ms, 1.792 ms] 413.78 µs (30.5%)
iast 1.522 ms [1.499 ms, 1.544 ms] 166.889 µs (12.3%)
profiling 1.545 ms [1.52 ms, 1.57 ms] 190.017 µs (14.0%)
tracing 1.496 ms [1.473 ms, 1.519 ms] 141.205 µs (10.4%)
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.32.0-SNAPSHOT~7f22f3ca7e, baseline=1.32.0-SNAPSHOT~8d4f9c2c40
    dateFormat X
    axisFormat %s
section baseline
no_agent (361.023 µs) : 341, 382
.   : milestone, 361,
iast (466.366 µs) : 446, 487
.   : milestone, 466,
iast_FULL (539.055 µs) : 518, 560
.   : milestone, 539,
iast_GLOBAL (492.308 µs) : 472, 513
.   : milestone, 492,
iast_HARDCODED_SECRET_DISABLED (475.516 µs) : 455, 496
.   : milestone, 476,
iast_INACTIVE (442.443 µs) : 422, 463
.   : milestone, 442,
iast_TELEMETRY_OFF (466.051 µs) : 445, 487
.   : milestone, 466,
tracing (445.891 µs) : 425, 467
.   : milestone, 446,
section candidate
no_agent (360.74 µs) : 341, 381
.   : milestone, 361,
iast (476.719 µs) : 456, 498
.   : milestone, 477,
iast_FULL (534.538 µs) : 514, 555
.   : milestone, 535,
iast_GLOBAL (496.001 µs) : 475, 517
.   : milestone, 496,
iast_HARDCODED_SECRET_DISABLED (465.605 µs) : 445, 486
.   : milestone, 466,
iast_INACTIVE (440.01 µs) : 419, 461
.   : milestone, 440,
iast_TELEMETRY_OFF (464.119 µs) : 444, 485
.   : milestone, 464,
tracing (438.604 µs) : 419, 459
.   : milestone, 439,
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 361.023 µs [340.51 µs, 381.536 µs] -
iast 466.366 µs [446.082 µs, 486.649 µs] 105.343 µs (29.2%)
iast_FULL 539.055 µs [518.453 µs, 559.656 µs] 178.031 µs (49.3%)
iast_GLOBAL 492.308 µs [471.96 µs, 512.656 µs] 131.285 µs (36.4%)
iast_HARDCODED_SECRET_DISABLED 475.516 µs [454.704 µs, 496.329 µs] 114.493 µs (31.7%)
iast_INACTIVE 442.443 µs [422.372 µs, 462.514 µs] 81.42 µs (22.6%)
iast_TELEMETRY_OFF 466.051 µs [445.432 µs, 486.67 µs] 105.028 µs (29.1%)
tracing 445.891 µs [425.068 µs, 466.713 µs] 84.867 µs (23.5%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 360.74 µs [340.601 µs, 380.879 µs] -
iast 476.719 µs [455.711 µs, 497.727 µs] 115.979 µs (32.2%)
iast_FULL 534.538 µs [514.147 µs, 554.928 µs] 173.797 µs (48.2%)
iast_GLOBAL 496.001 µs [474.659 µs, 517.343 µs] 135.261 µs (37.5%)
iast_HARDCODED_SECRET_DISABLED 465.605 µs [445.366 µs, 485.843 µs] 104.864 µs (29.1%)
iast_INACTIVE 440.01 µs [419.173 µs, 460.847 µs] 79.27 µs (22.0%)
iast_TELEMETRY_OFF 464.119 µs [443.584 µs, 484.653 µs] 103.378 µs (28.7%)
tracing 438.604 µs [418.51 µs, 458.697 µs] 77.863 µs (21.6%)

pr-commenter[bot] avatar Mar 14 '24 15:03 pr-commenter[bot]

This PR requires some additional work, as in the current implementation DSM stats are aggregated without taking ds tags into account. Please, do not merge yet.

kr-igor avatar Mar 22 '24 01:03 kr-igor

Implemented in https://github.com/DataDog/dd-trace-java/pull/6859

paul-laffon-dd avatar May 13 '24 08:05 paul-laffon-dd