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

Dependency collection with telemetry for native image

Open smola opened this issue 1 year ago • 1 comments
trafficstars

What Does This Do

Adds support for dependency collection with telemetry on native image.

Dependency collection is done during the native image build (analysis stage), and embedded in the final binary within resource files. These are later read at runtime to send them through telemetry.

Motivation

Additional Notes

Depends on:

  • https://github.com/DataDog/dd-trace-java/pull/6286 for the initial telemetry support

To do:

  • [ ] Check if the scenario of multiple analysis runs with multiple dependencies files is possible and works.

smola avatar Nov 30 '23 18:11 smola

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master smola/graalvm-telemetry-deps
git_commit_date 1701362494 1701369930
git_commit_sha 451af09813 307f544d18
release_version 1.25.0-SNAPSHOT~451af09813 1.25.0-SNAPSHOT~307f544d18
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1701372466 1701372466
ci_job_id 378715270 378715270
ci_pipeline_id 24000290 24000290
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 2 performance regressions! Performance is the same for 42 metrics, 10 unstable metrics.

scenario Δ mean execution_time candidate mean execution_time baseline mean execution_time
scenario:startup:insecure-bank:tracing:Telemetry worse
[+156.061µs; +504.807µs] or [+2.131%; +6.892%]
7.655ms 7.325ms
scenario:startup:petclinic:tracing:Telemetry worse
[+197.494µs; +529.893µs] or [+2.721%; +7.301%]
7.622ms 7.258ms
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.25.0-SNAPSHOT~307f544d18, baseline=1.25.0-SNAPSHOT~451af09813

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.041 s) : 0, 1041260
Total [baseline] (9.406 s) : 0, 9405892
Agent [candidate] (1.046 s) : 0, 1046225
Total [candidate] (9.42 s) : 0, 9420128
section appsec
Agent [baseline] (1.123 s) : 0, 1122778
Total [baseline] (9.51 s) : 0, 9510050
Agent [candidate] (1.129 s) : 0, 1128818
Total [candidate] (9.423 s) : 0, 9422534
section iast
Agent [baseline] (1.153 s) : 0, 1153277
Total [baseline] (9.57 s) : 0, 9570258
Agent [candidate] (1.151 s) : 0, 1150791
Total [candidate] (9.561 s) : 0, 9561093
section profiling
Agent [baseline] (1.242 s) : 0, 1242228
Total [baseline] (9.725 s) : 0, 9725006
Agent [candidate] (1.223 s) : 0, 1223135
Total [candidate] (9.644 s) : 0, 9644304
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.041 s -
Agent appsec 1.123 s 81.518 ms (7.8%)
Agent iast 1.153 s 112.017 ms (10.8%)
Agent profiling 1.242 s 200.968 ms (19.3%)
Total tracing 9.406 s -
Total appsec 9.51 s 104.158 ms (1.1%)
Total iast 9.57 s 164.366 ms (1.7%)
Total profiling 9.725 s 319.115 ms (3.4%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.046 s -
Agent appsec 1.129 s 82.593 ms (7.9%)
Agent iast 1.151 s 104.566 ms (10.0%)
Agent profiling 1.223 s 176.91 ms (16.9%)
Total tracing 9.42 s -
Total appsec 9.423 s 2.406 ms (0.0%)
Total iast 9.561 s 140.965 ms (1.5%)
Total profiling 9.644 s 224.176 ms (2.4%)
gantt
    title petclinic - break down per module: candidate=1.25.0-SNAPSHOT~307f544d18, baseline=1.25.0-SNAPSHOT~451af09813

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (649.779 ms) : 0, 649779
BytebuddyAgent [candidate] (652.581 ms) : 0, 652581
GlobalTracer [baseline] (300.183 ms) : 0, 300183
GlobalTracer [candidate] (301.569 ms) : 0, 301569
AppSec [baseline] (48.806 ms) : 0, 48806
AppSec [candidate] (49.079 ms) : 0, 49079
Remote Config [baseline] (689.144 µs) : 0, 689
Remote Config [candidate] (699.004 µs) : 0, 699
Telemetry [baseline] (7.258 ms) : 0, 7258
Telemetry [candidate] (7.622 ms) : 0, 7622
section appsec
BytebuddyAgent [baseline] (645.363 ms) : 0, 645363
BytebuddyAgent [candidate] (648.921 ms) : 0, 648921
GlobalTracer [baseline] (298.798 ms) : 0, 298798
GlobalTracer [candidate] (300.368 ms) : 0, 300368
AppSec [baseline] (136.284 ms) : 0, 136284
AppSec [candidate] (137.242 ms) : 0, 137242
Remote Config [baseline] (651.217 µs) : 0, 651
Remote Config [candidate] (647.253 µs) : 0, 647
Telemetry [baseline] (7.409 ms) : 0, 7409
Telemetry [candidate] (7.154 ms) : 0, 7154
section iast
BytebuddyAgent [baseline] (765.256 ms) : 0, 765256
BytebuddyAgent [candidate] (763.87 ms) : 0, 763870
GlobalTracer [baseline] (278.743 ms) : 0, 278743
GlobalTracer [candidate] (278.197 ms) : 0, 278197
AppSec [baseline] (46.482 ms) : 0, 46482
AppSec [candidate] (46.507 ms) : 0, 46507
Remote Config [baseline] (651.753 µs) : 0, 652
Remote Config [candidate] (1.317 ms) : 0, 1317
Telemetry [baseline] (9.37 ms) : 0, 9370
Telemetry [candidate] (7.535 ms) : 0, 7535
IAST [baseline] (18.551 ms) : 0, 18551
IAST [candidate] (19.168 ms) : 0, 19168
section profiling
ProfilingAgent [baseline] (89.482 ms) : 0, 89482
ProfilingAgent [candidate] (88.406 ms) : 0, 88406
BytebuddyAgent [baseline] (665.549 ms) : 0, 665549
BytebuddyAgent [candidate] (654.726 ms) : 0, 654726
GlobalTracer [baseline] (374.326 ms) : 0, 374326
GlobalTracer [candidate] (368.751 ms) : 0, 368751
AppSec [baseline] (49.808 ms) : 0, 49808
AppSec [candidate] (49.068 ms) : 0, 49068
Remote Config [baseline] (721.575 µs) : 0, 722
Remote Config [candidate] (708.64 µs) : 0, 709
Telemetry [baseline] (7.511 ms) : 0, 7511
Telemetry [candidate] (7.562 ms) : 0, 7562
Profiling [baseline] (89.505 ms) : 0, 89505
Profiling [candidate] (88.429 ms) : 0, 88429
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.25.0-SNAPSHOT~307f544d18, baseline=1.25.0-SNAPSHOT~451af09813

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.038 s) : 0, 1037619
Total [baseline] (8.71 s) : 0, 8710008
Agent [candidate] (1.043 s) : 0, 1042881
Total [candidate] (8.737 s) : 0, 8737041
section iast
Agent [baseline] (1.152 s) : 0, 1151712
Total [baseline] (9.218 s) : 0, 9218020
Agent [candidate] (1.163 s) : 0, 1162892
Total [candidate] (9.226 s) : 0, 9225691
section iast_TELEMETRY_OFF
Agent [baseline] (1.145 s) : 0, 1145422
Total [baseline] (9.245 s) : 0, 9244632
Agent [candidate] (1.153 s) : 0, 1152744
Total [candidate] (9.239 s) : 0, 9239190
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.038 s -
Agent iast 1.152 s 114.093 ms (11.0%)
Agent iast_TELEMETRY_OFF 1.145 s 107.804 ms (10.4%)
Total tracing 8.71 s -
Total iast 9.218 s 508.012 ms (5.8%)
Total iast_TELEMETRY_OFF 9.245 s 534.623 ms (6.1%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.043 s -
Agent iast 1.163 s 120.011 ms (11.5%)
Agent iast_TELEMETRY_OFF 1.153 s 109.864 ms (10.5%)
Total tracing 8.737 s -
Total iast 9.226 s 488.65 ms (5.6%)
Total iast_TELEMETRY_OFF 9.239 s 502.149 ms (5.7%)
gantt
    title insecure-bank - break down per module: candidate=1.25.0-SNAPSHOT~307f544d18, baseline=1.25.0-SNAPSHOT~451af09813

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (647.512 ms) : 0, 647512
BytebuddyAgent [candidate] (650.707 ms) : 0, 650707
GlobalTracer [baseline] (299.158 ms) : 0, 299158
GlobalTracer [candidate] (300.228 ms) : 0, 300228
AppSec [baseline] (48.5 ms) : 0, 48500
AppSec [candidate] (49.008 ms) : 0, 49008
Remote Config [baseline] (688.391 µs) : 0, 688
Remote Config [candidate] (691.136 µs) : 0, 691
Telemetry [baseline] (7.325 ms) : 0, 7325
Telemetry [candidate] (7.655 ms) : 0, 7655
section iast
BytebuddyAgent [baseline] (764.438 ms) : 0, 764438
BytebuddyAgent [candidate] (772.26 ms) : 0, 772260
GlobalTracer [baseline] (277.943 ms) : 0, 277943
GlobalTracer [candidate] (280.461 ms) : 0, 280461
AppSec [baseline] (48.154 ms) : 0, 48154
AppSec [candidate] (48.909 ms) : 0, 48909
IAST [baseline] (18.376 ms) : 0, 18376
IAST [candidate] (17.127 ms) : 0, 17127
Remote Config [baseline] (569.637 µs) : 0, 570
Remote Config [candidate] (574.102 µs) : 0, 574
Telemetry [baseline] (7.921 ms) : 0, 7921
Telemetry [candidate] (8.917 ms) : 0, 8917
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (758.999 ms) : 0, 758999
BytebuddyAgent [candidate] (764.033 ms) : 0, 764033
GlobalTracer [baseline] (278.888 ms) : 0, 278888
GlobalTracer [candidate] (280.959 ms) : 0, 280959
AppSec [baseline] (51.009 ms) : 0, 51009
AppSec [candidate] (52.279 ms) : 0, 52279
IAST [baseline] (14.546 ms) : 0, 14546
IAST [candidate] (13.854 ms) : 0, 13854
Remote Config [baseline] (570.796 µs) : 0, 571
Remote Config [candidate] (561.845 µs) : 0, 562
Telemetry [baseline] (7.04 ms) : 0, 7040
Telemetry [candidate] (6.644 ms) : 0, 6644

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
end_time 2023-11-30T19:06:56 2023-11-30T19:23:30
git_branch master smola/graalvm-telemetry-deps
git_commit_date 1701362494 1701369930
git_commit_sha 451af09813 307f544d18
release_version 1.25.0-SNAPSHOT~451af09813 1.25.0-SNAPSHOT~307f544d18
start_time 2023-11-30T19:06:43 2023-11-30T19:23:17
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1701372466 1701372466
ci_job_id 378715270 378715270
ci_pipeline_id 24000290 24000290
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
variant iast iast

Summary

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

Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.25.0-SNAPSHOT~307f544d18, baseline=1.25.0-SNAPSHOT~451af09813
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.348 ms) : 1329, 1367
.   : milestone, 1348,
appsec (1.74 ms) : 1716, 1765
.   : milestone, 1740,
iast (1.518 ms) : 1493, 1542
.   : milestone, 1518,
profiling (1.51 ms) : 1485, 1535
.   : milestone, 1510,
tracing (1.5 ms) : 1474, 1525
.   : milestone, 1500,
section candidate
no_agent (1.353 ms) : 1333, 1373
.   : milestone, 1353,
appsec (1.788 ms) : 1762, 1813
.   : milestone, 1788,
iast (1.552 ms) : 1527, 1576
.   : milestone, 1552,
profiling (1.552 ms) : 1525, 1579
.   : milestone, 1552,
tracing (1.52 ms) : 1495, 1546
.   : milestone, 1520,
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.348 ms [1.329 ms, 1.367 ms] -
appsec 1.74 ms [1.716 ms, 1.765 ms] 392.183 µs (29.1%)
iast 1.518 ms [1.493 ms, 1.542 ms] 169.712 µs (12.6%)
profiling 1.51 ms [1.485 ms, 1.535 ms] 162.36 µs (12.0%)
tracing 1.5 ms [1.474 ms, 1.525 ms] 151.76 µs (11.3%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.353 ms [1.333 ms, 1.373 ms] -
appsec 1.788 ms [1.762 ms, 1.813 ms] 434.425 µs (32.1%)
iast 1.552 ms [1.527 ms, 1.576 ms] 198.756 µs (14.7%)
profiling 1.552 ms [1.525 ms, 1.579 ms] 198.71 µs (14.7%)
tracing 1.52 ms [1.495 ms, 1.546 ms] 167.373 µs (12.4%)
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.25.0-SNAPSHOT~307f544d18, baseline=1.25.0-SNAPSHOT~451af09813
    dateFormat X
    axisFormat %s
section baseline
no_agent (370.886 µs) : 351, 391
.   : milestone, 371,
iast (475.716 µs) : 455, 497
.   : milestone, 476,
iast_FULL (539.986 µs) : 519, 560
.   : milestone, 540,
iast_INACTIVE (445.675 µs) : 425, 467
.   : milestone, 446,
iast_TELEMETRY_OFF (472.73 µs) : 452, 493
.   : milestone, 473,
tracing (448.051 µs) : 427, 469
.   : milestone, 448,
section candidate
no_agent (365.914 µs) : 346, 385
.   : milestone, 366,
iast (472.523 µs) : 452, 493
.   : milestone, 473,
iast_FULL (536.628 µs) : 516, 557
.   : milestone, 537,
iast_INACTIVE (448.837 µs) : 429, 469
.   : milestone, 449,
iast_TELEMETRY_OFF (487.729 µs) : 467, 508
.   : milestone, 488,
tracing (438.3 µs) : 418, 458
.   : milestone, 438,
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 370.886 µs [350.74 µs, 391.033 µs] -
iast 475.716 µs [454.558 µs, 496.875 µs] 104.83 µs (28.3%)
iast_FULL 539.986 µs [519.499 µs, 560.473 µs] 169.1 µs (45.6%)
iast_INACTIVE 445.675 µs [424.79 µs, 466.559 µs] 74.788 µs (20.2%)
iast_TELEMETRY_OFF 472.73 µs [452.12 µs, 493.339 µs] 101.843 µs (27.5%)
tracing 448.051 µs [426.839 µs, 469.264 µs] 77.165 µs (20.8%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 365.914 µs [346.375 µs, 385.453 µs] -
iast 472.523 µs [452.129 µs, 492.918 µs] 106.609 µs (29.1%)
iast_FULL 536.628 µs [516.068 µs, 557.187 µs] 170.714 µs (46.7%)
iast_INACTIVE 448.837 µs [428.631 µs, 469.044 µs] 82.923 µs (22.7%)
iast_TELEMETRY_OFF 487.729 µs [467.12 µs, 508.338 µs] 121.816 µs (33.3%)
tracing 438.3 µs [418.302 µs, 458.297 µs] 72.386 µs (19.8%)

pr-commenter[bot] avatar Nov 30 '23 18:11 pr-commenter[bot]